首页 > 解决方案 > 转换为 JSON 时,@ 符号出现在 XML 的属性之前

问题描述

我正在将以下 XML 转换为 JSON:

<NODE1>
  <NODE2>200</NODE2>
    <NODE3>Got the contents</NODE3>
      <NODE4 INDEX="1" SIZE="2" TOTALPAGES="1" TOTAL="2">
      <NODE5 ID="94086" TITLE="Bo Aung Din Lo Lu Ky" />
      <NODE5 ID="94087" TITLE="Bo Aung Din Lo Lu Ky" />
    </NODE4>
</NODE1>

使用以下代码:

XmlDocument doc = new XmlDocument();
doc.Load("C:\\1.xml");
string jsonText = JsonConvert.SerializeXmlNode(doc);

我得到的问题是@符号出现在 XML 的属性之前,即,@ID而不是ID.

这是正确的吗?还是库中的错误?

标签: c#jsonjson.net

解决方案


这是正确的。

据记录有这种行为:

属性以 @ 为前缀,并且应位于对象的开头。

(来自https://www.newtonsoft.com/json/help/html/ConvertingJSONandXML.htm

我认为这是因为 JSON 仅具有结构属性,而 XML 具有元素和属性(它们的名称可能重叠:同一元素具有与属性同名的子元素)。通过为名称添加前缀,输出 JSON 保留了区别。


推荐阅读