将XML字符串转换为JSON字符串不会产生期望的结果
我正在使用NewtonSoft.JSON解析XML文档并构建JSON字符串,但没有得到所需的输出。下面给出了我的xml字符串将XML字符串转换为JSON字符串不会产生期望的结果,json,json.net,Json,Json.net,我正在使用NewtonSoft.JSON解析XML文档并构建JSON字符串,但没有得到所需的输出。下面给出了我的xml字符串 <fulfillment> <tracking_number/> <line_items> <id>466157049</id> <quantity>1</quantity> <
<fulfillment>
<tracking_number/>
<line_items>
<id>466157049</id>
<quantity>1</quantity>
</line_items>
</fulfillment>
但是我需要JSON,如下所示,因为我的XML cam包含多个行项目数据。上面和下面JSON的区别是行项目元素后面的数组括号。当我在xml中使用两行_项时,它会给出所需的结果,但对于单行_项,它不会在行_项部分返回类似JSON格式的数组
{"fulfillment":{"tracking_number":"er2222222","line_items":[{"id":"464194075","quantity":"1"}]}}
解决问题的出路是什么
谢谢
Utpal Maity您需要对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>
使用上述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"
}
]
}
谢谢你的回复。但是,有没有其他方法可以做到这一点而不改变文档的结构,因为这个XML来自不同的源,我无法轻松修改结构。这是我所知道的方法。但是,如果您将xml加载到
XmlDocument
中,并且您知道它的结构,那么您总是可以添加所需的属性,并将xml序列化为适合您的json格式。
var xml = new XmlDocument();
xml.Load("Location of the xml file");
var jsonStr = JsonConvert.SerializeXmlNode(xml);
{
"fulfillment": {
"tracking_number": "er2222222",
"line_items": [
{
"id": "466157049",
"quantity": "1"
},
{
"id": "23",
"quantity": "2"
}
]
}