我一直在为以下问题而苦苦挣扎。我有一个 xml,必须使用 Azure 上的液体映射转换为 json。有时节点包含 xml 编码的双引号,如下所示:
<node>
<value>"some string"and the rest</value>
</node>
我的液体映射如下所示:
"name":"{{ node.value }}"
映射的结果是以下错误:
{
"Code": "IncorrectLiquidTransformOutputType",
"Message": "An error occurred while converting the transformed value to JSON. The transformed value is not a valid JSON. 'After parsing a value an unexpected character was encountered: s. Path '[205].node[9].value', line 32305, position 13.'",
"Details": [
{
"Code": "IncorrectLiquidTransformOutputType",
"Message": "{"ClassName":"Microsoft.Azure.Function.Common.ErrorResponses.ErrorMessageException","Message":"An error occurred while converting the transformed value to JSON. The transformed value is not a valid JSON. 'After parsing a value an unexpected character was encountered: s. Path '[205].node[9].name', line ....., position 13.'","Data":null,"InnerException":{"ClassName":"Newtonsoft.Json.JsonReaderException","Message":"After parsing a value an unexpected character was encountered: s. Path '[205].node[9].value'....",
"Details": null,
"InnerError": null
}
],
"InnerError": null
}
这意味着字符 " 被正确解码为双引号,然后它会导致 json 出现问题。我需要保持这个角色是这样的:
"name":""some string"and the rest"
有什么想法怎么做吗?
我遇到了完全相同的问题,但是在通过液体转换之前,我将xml转换为json。因此,转换会获得一个正确转义的 json 字符串:
"name":"William "Billy" Bob"
我测试了上面提出的解决方案(看起来有点奇怪,因为它用相同的值替换了任何出现(,起初它没有做任何事情。但是,经过一番摆弄,我删除了第一个替换,然后它实际上起作用了。
{{ node.value | Replace: '"', '"'}}
您是否尝试在输出中转义它们?
"name":"{{ node.value |替换: "\" , "\" |替换:"\", "\"}}">