You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function中如何反序列化含XML属性值的JSON请求

报错原因

反序列化直接失败的核心原因是你收到的请求体本身不是合法JSON格式,存在两处语法错误:

  • policyValue字段存储的XML内容中,action="allow"部分直接使用了双引号,和JSON字符串的边界双引号冲突,解析器读到这里会判定字符串提前终止,后续内容直接触发语法报错
  • operationPolicies数组内的对象末尾多了一个多余的逗号,标准JSON语法不允许对象/数组最后一个元素后存在尾逗号
解决方法

根据你是否能控制上游请求的发送逻辑,选择对应方案即可:

方案1:可调整上游请求构造逻辑

直接让上游发送符合规范的合法JSON即可,修改两个点:

  1. JSON字符串内部的所有双引号统一转义为\"
  2. 删除JSON结构里多余的尾逗号

修正后的合法请求示例如下,可以直接被任意JSON解析器正常反序列化,不需要对XML字段做特殊处理:

{
    "policyVersionedApiName": "petstoreoperationpolicyapi",
    "operationPolicies": [
        {
            "policyFormat": "rawxml",
            "operationId": "createUsersWithArrayInput",
            "policyValue": "<policies> <inbound> <base/> <ip-filter action=\"allow\"> <address>10.100.7.1</address> </ip-filter> </inbound> </policies>"
        }
    ]
}

方案2:无法修改上游发送逻辑

不要直接对原始请求体用默认JSON反序列化方法,先做文本预处理再解析:

  1. 先把请求体读取为原始字符串,定位到policyValue字段的取值范围,将字段值内部未转义的双引号替换为\"
  2. 正则匹配删除JSON结构里所有多余的尾逗号
  3. 预处理得到合法JSON字符串后,再执行反序列化操作

提示:如果XML内容里还包含换行、反斜杠等其他特殊字符,预处理逻辑需要同步补充对应的转义规则,避免触发其他解析错误。

内容的提问来源于stack exchange,提问作者Ramesh Baddam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:06:25