首页 文章

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

提问于
浏览
3

我有一个生成JSON的API,如下所示:

)]}',

{
    //JSON DATA
}

//JSON DATA 是有效的JSON,但 )]}', up top不是 .

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

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

那么,一些相关的问题:

1)我可以告诉逻辑应用程序返回无效的JSON吗?

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

3)这一切都是通过Azure门户网站完成的 . 有更好的工具吗?视觉工作室?

我还要提一下,如果我在返回XML而不是JSON的同一API上调用路由,那么Logic App工作正常 . 所以它绝对不喜欢JSON响应 .

谢谢!

2 回答

  • 0

    首先,请不要将三个问题作为一个问题发布 .


    问题1) . 您可以做的最好的事情是让API返回一个有效的JSON对象 . 这有利于百万个原因 . 这里有几个:

    • 它几乎是一个标准(有效的JSON或XML - 是的,老派的方式);

    • 因此,此API的任何用户(包括您)都不需要挣扎并猜测正在发生的事情以及原因;

    • 您的Logic App的步骤将在不增加额外复杂性的情况下正常工作;

    • 你将使这个世界和你的业力变得更好 .

    如果API方面的更改不在您的范围内,我很幸运并且HTTP操作成功(状态代码2xx),您可以尝试使用Query Action,其功能是截断第一个字符 . 它看起来像 something like this (我不知道确切的语法): @Substring(body('myHttpGet'), 4, length(body('myHttpGet')) - 4) 其中 myHttpGet 是Http Get动作的id .

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

    UPDATE 您可以做的另一件事是包装脏API . 例如,您可以创建一个简单的Azure功能,该功能可以调用您每月数百万个请求的API . 这里唯一的缺点是增加延迟,这可能根本不是问题 - 测试它,看它是否增加不到100ms左右......哦,不要忘记向API所有者提交一张票,他们让我们的世界变得糟糕!


    问题2)在Azure Logic App Web UI中,您可以查看执行细节,肯定会出现错误 .

    enter image description here

    enter image description here

    enter image description here


    问题3)你要求提供一个工具推荐,根据定义,它是一个非常主观的东西,并且在StackOverflow上是偏离主题的 .

  • 2

    TL / DR: The other app is not producing valid JSON.

    意思是,这不是你要解决的问题 . 如果所有者声称它应该是另一个应用程序必须返回有效的JSON .

    如果他们不能或不会生成有效的JSON,那么您需要做的第一件事就是通知您的管理层您必须花费 a lot of extra time 来容纳他们的非标准格式 .

相关问题