Azure Logic Apps中Parse JSON后传递对象至JSON to Table的表达式问题
解决Azure Logic Apps中JSON字符串转对象并传入JSON to Table的问题
问题核心
触发器返回的是JSON格式的字符串,而JSON to Table操作要求输入为JSON对象/数组类型(JContainer),直接传递字符串会触发类型转换错误:Unable to cast object of type 'Newtonsoft.Json.Linq.JValue' to type 'Newtonsoft.Json.Linq.JContainer'。你尝试的@{body('Parse_JSON')}报错,是因为表达式语法使用错误。
解决方案
方案1:使用Parse JSON操作(推荐,带类型校验)
- 添加
Parse JSON操作,将触发器的Content(即输入的JSON字符串)作为该操作的输入。 - 生成Schema:点击操作中的「Use sample payload to generate schema」,粘贴示例JSON,自动生成类型校验Schema。
- 在
JSON to Table的Data字段,直接选择Parse JSON操作的Body(动态内容列表中选择);如果手动写表达式,直接写body('Parse_JSON')即可——不需要额外套@{ },这是你之前报错的核心原因(表达式输入框中无需外层的@{ },该符号仅用于在普通文本框中嵌入表达式)。
方案2:用表达式直接转换字符串为对象
如果不需要类型校验,可跳过Parse JSON,直接在JSON to Table的Data字段输入以下表达式:
json(triggerBody()?['Content'])
json()函数会将字符串类型的输入直接转换为JSON对象,满足JSON to Table的输入要求。
方案3:通过变量中转(优化版)
初始化一个类型为Object的变量,赋值时使用表达式json(triggerBody()?['Content']),之后将该变量传入JSON to Table的Data字段即可。
示例输入JSON
{ "comment": null, "data": { "id": "123", "Person": { "Name": "Testmann", "Firstname": "Tim" }, "Timestamp": "2023-03-22T20:16:04.663252+01:00", "Fotos_Apppletree": [ { "photo_description_1": null, "_1_Foto_Appletree": { "fileId": "10", "fileName": "Appletree_2023_03_22_19_16_09.png", "timestamp": "2023-03-22T19:16:09.082243Z", "size": 63865, "url": "https://path10" } }, { "photo_description_2": null, "_1_Foto_Appletree": { "fileId": "11", "fileName": "Appletree_2023_03_22_19_16_15.png", "timestamp": "2023-03-22T19:16:15.082243Z", "size": 63865, "url": "https://path11" } } ] } }
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

