非标准 JSON 和 Azure 逻辑应用程序

Non-standard JSON and Azure Logic Apps

我有一个 API 生成 JSON 像这样:

)]}',

{
    //JSON DATA
}

//JSON DATA 有效 JSON,但 )]}', up top 无效。

当我尝试通过逻辑应用获取此数据时,我得到:

BadRequest. Http request failed: the content was not a valid JSON.

那么,几个相关的问题:

1) 我可以告诉逻辑应用 return 无效的 JSON 吗?

2) 如何更好地调试问题?我碰巧知道响应无效,但如果我不知道怎么办?我可以在某处查看原始数据吗?

3) 这一切都是通过 Azure 门户网站完成的。有更好的工具吗? Visual Studio?

我还应该提到,如果我在与 return 相同的 API 上调用路由 XML 而不是 JSON,那么 Logic App 就可以正常工作了。所以它绝对不喜欢 JSON 响应。

谢谢!

首先,请不要post三个问题作为一个问题


问题1)。您能做的最好的事情就是使 API return 成为有效的 JSON 对象。出于百万个原因,这很好。这里有一些:

  • 这几乎是一个标准(有效 JSON 或 XML -- 是的,老派方式);
  • 因此,此 API 的任何用户(包括您)都无需费力猜测发生了什么以及为什么;
  • 您的逻辑应用程序的步骤将正常工作而不会增加额外的复杂性;
  • 你会让这个世界和你的业力变得更好。

如果API方面的改变不在你力所能及的范围内,我认为你无能为力。如果幸运并且 HTTP 操作成功(状态代码 2xx),您可以尝试使用 Query Action 和截断第一个字符的函数。它看起来 像这样 (我不知道确切的语法): @Substring(body('myHttpGet'), 4, length(body('myHttpGet')) - 4) 其中 myHttpGet 是Http Get 操作的 ID。

但是,如果可能的话,我再次强烈建议修复 API 这是问题的根本原因,而不是在那之后处理垃圾响应。

UPDATE 你可以做的另一件事是把脏东西包起来API。例如,您可以创建一个简单的 Azure 函数来调用您不直接控制的 API,并根据您的消费要求清理响应。这个 Azure Function 函数应该很容易从逻辑应用程序调用。它几乎不花钱(除非我们说的是数百万 requests/month)。这里唯一的缺点是延迟增加,这可能根本不是问题——测试它,看看它是否增加了不到 100 毫秒左右……哦,别忘了用 [=60 提交一张票=] 老板,他们让我们的世界变得糟糕!


问题2)在Azure Logic App web中UI你可以查看执行细节,错误肯定在那里。


问题 3) 您要求的工具推荐根据定义是非常主观的事情,在 Whosebug 上与主题无关。

TL/DR:其他应用未生成有效的 JSON。

也就是说,这不是你要解决的问题。另一个应用程序必须 return 有效 JSON 如果所有者声称它应该有效。

如果他们不能或不会产生有效的 JSON,那么您需要做的第一件事就是通知您的管理层,您将不得不花费 很多额外的时间 适应他们的非标准格式。