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



我使用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部分中,它不会像JSON格式一样返回数组。

{"fulfillment":{"tracking_number":"er2222222","line_items":[{"id":"464194075","quantity":"1"}]}}

解决这个问题的出路是什么?

谢谢伍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>

用JSON序列化这个xml示例。NET将生成您需要的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"
            }
        ]
    }

相关内容

  • 没有找到相关文章