我正在使用NewtonSoft.JSON来解析XML文档并构建JSON字符串但是我没有获得所需的输出。我的xml字符串在下面给出
<fulfillment>
<tracking_number/>
<line_items>
<id>466157049</id>
<quantity>1</quantity>
</line_items>
</fulfillment>
将XML转换为JSON后,它给出了以下JSON
{"fulfillment":{"tracking_number":"er2222222","line_items":{"id":"464194075","quantity":"1"}}}
但是我需要JSON如下所示,因为我的XML cam包含多个line_items数据。上面和下面的JSON之间的差异是行项目元素之后的数组括号。当我在xml中使用两个line_items时,它提供了所需的结果,但是使用单个line_items,它不会在line_items部分中返回类似JSON格式的数组。
{"fulfillment":{"tracking_number":"er2222222","line_items":[{"id":"464194075","quantity":"1"}]}}
解决问题的方法是什么。
由于 Utpal Maity
答案 0 :(得分:0)
您需要在xml中进行一些更改。它应该是这样的:
<fulfillment xmlns:json='http://james.newtonking.com/projects/json'>
<tracking_number>er2222222</tracking_number>
<line_items json:Array='true'>
<id>466157049</id>
<quantity>1</quantity>
</line_items>
</fulfillment>
使用JSON.NET对此xml示例进行序列化将生成所需的json字符串。添加多个line_items
节点将提供预期结果。多个line_items
的示例:
<fulfillment xmlns:json='http://james.newtonking.com/projects/json'>
<tracking_number>er2222222</tracking_number>
<line_items json:Array='true'>
<id>466157049</id>
<quantity>1</quantity>
</line_items>
<line_items>
<id>466157050</id>
<quantity>2</quantity>
</line_items>
</fulfillment>
使用上面的xml示例调用以下代码:
var xml = new XmlDocument();
xml.Load("Location of the xml file");
var jsonStr = JsonConvert.SerializeXmlNode(xml);
将产生以下json字符串:
{
"fulfillment": {
"tracking_number": "er2222222",
"line_items": [
{
"id": "466157049",
"quantity": "1"
},
{
"id": "23",
"quantity": "2"
}
]
}