【发布时间】:2019-04-25 18:56:38
【问题描述】:
我正在使用 C# 将 SQL 输出 XML 转换为 JSON 转换。当我将具有多个集合元素的 XML 转换为 JSON 时,像 JSON 数组一样的输出同时 XML 有单个集合,然后像 JSON 对象一样输出。在这两种情况下,如何将输出保持为 JSON 数组?
案例一:
<root>
<DATA>
<NAME>NAYAN</NAME>
<LOCATION>CHENNAI</LOCATION>
</DATA>
<DATA>
<NAME>TARA</NAME>
<LOCATION>CHENNAI</LOCATION>
</DATA>
</root>
结果:
{
"DATA": [
{
"NAME": "NAYAN",
"LOCATION": "CHENNAI"
},
{
"NAME": "TARA",
"LOCATION": "CHENNAI"
}
]
}
案例 2:
<root>
<DATA>
<NAME>NAYAN</NAME>
<LOCATION>CHENNAI</LOCATION>
</DATA>
</root>
结果:
{
"DATA": {
"NAME": "NAYAN",
"LOCATION": "CHENNAI"
}
}
期望:
{
"DATA":[
{
"NAME": "NAYAN",
"LOCATION": "CHENNAI"
}
]
}
这是我的 C# 代码:
static void Main(string[] args)
{
string xml = @"<root>
<DATA>
<NAME>NAYAN</NAME>
<LOCATION>CHENNAI</LOCATION>
</DATA>
</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string json = JsonConvert.SerializeXmlNode(doc,Newtonsoft.Json.Formatting.Indented,true);
Console.WriteLine(json);
}
【问题讨论】:
-
请问您能显示您正在使用的代码吗?
-
@JonSkeet 当然。现在我已经在我的问题中添加了代码。
-
好的。结构总是一样的吗?如果是这样,我个人会直接迭代 XML(虽然我会使用 LINQ to XML 而不是
XmlDocument)并创建一个JArray。这将是非常简单的代码 - 但如果您需要它来处理不同的结构,它将无法工作。 -
@ArulmuruganK,如果对您有帮助,我在下面添加了我的答案,然后在答案左侧打勾以使其变为绿色