Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML字符串转换为JSON字符串不会产生期望的结果_Json_Json.net - Fatal编程技术网

将XML字符串转换为JSON字符串不会产生期望的结果

将XML字符串转换为JSON字符串不会产生期望的结果,json,json.net,Json,Json.net,我正在使用NewtonSoft.JSON解析XML文档并构建JSON字符串,但没有得到所需的输出。下面给出了我的xml字符串 <fulfillment> <tracking_number/> <line_items> <id>466157049</id> <quantity>1</quantity> <

我正在使用NewtonSoft.JSON解析XML文档并构建JSON字符串,但没有得到所需的输出。下面给出了我的xml字符串

<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"
            }
        ]
    }