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

XML响应转JSON解析报错:Unexpected character异常处理求助

解决XML转义字符串转JSON的解析错误问题

嘿,我来帮你搞定这个问题!你遇到的Unexpected character encountered while parsing value: &lt;错误原因很明确:你收到的响应是经过HTML实体转义的XML字符串,不是JSON,直接用JSON解析器处理当然会失败——JSON解析器预期开头是{或[,但你的字符串开头是&lt;(也就是转义后的<)。

下面是分两步的解决方案:

步骤1:解码HTML实体,还原原始XML

首先需要把字符串里的&lt;、&gt;这些HTML实体转成对应的XML符号(<、>)。在.NET环境下,你可以用内置的WebUtility.HtmlDecode方法来完成:

// 你收到的转义后XML字符串
string escapedXml = "&lt;response&gt; \r\n &lt;data&gt; \r\n &lt;status no=\"0\" substatus=\"0\"&gt; Connection succeeded &lt;/status&gt;\r\n &lt;/data&gt; \r\n &lt;/response&gt;";

// 解码得到原始XML
string rawXml = System.Net.WebUtility.HtmlDecode(escapedXml);

解码后你会得到正常的XML内容:

<response> 
 <data> 
 <status no="0" substatus="0"> Connection succeeded </status>
 </data> 
</response>

步骤2:将XML转换为JSON

接下来可以用Json.NET(Newtonsoft.Json)工具把XML转换成JSON,这是.NET里处理这类转换最方便的库之一。如果还没安装,可以通过NuGet安装Newtonsoft.Json包。

示例代码:

using Newtonsoft.Json;
using System.Xml;

// 加载XML到XmlDocument
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(rawXml);

// 序列化为JSON(带缩进格式,方便阅读)
string jsonResult = JsonConvert.SerializeXmlNode(xmlDoc, Formatting.Indented);

执行后你会得到这样的JSON结果:

{
  "response": {
    "data": {
      "status": {
        "@no": "0",
        "@substatus": "0",
        "#text": " Connection succeeded "
      }
    }
  }
}

可选:调整JSON输出格式

如果你不想在JSON里保留XML属性的@前缀,或者文本节点的#text键,可以通过XmlNodeConverter的配置来调整:

using Newtonsoft.Json.Converters;

var converter = new XmlNodeConverter {
    OmitRootObject = false,
    WriteArrayAttributes = false,
    // 去掉属性的@前缀
    AttributePrefix = ""
};
string jsonResult = JsonConvert.SerializeObject(xmlDoc, Formatting.Indented, converter);

这样输出的JSON会更简洁:

{
  "response": {
    "data": {
      "status": {
        "no": "0",
        "substatus": "0",
        "#text": " Connection succeeded "
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者Akbar Badhusha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:20