将许多JSON对象从一个文件转换为一个XML文件,其中包含与JSON一样多的元素

时间:2017-08-09 09:23:05

标签: java json xml

假设我在同一个文件test.json中有很多JSON对象 对于这个例子,我有3个如下。

SetTabsHeight()

现在,我想将这3个JSON对象转换为一个XML,其中包含3个elemnts字符串。  我使用org.jason的代码是:

{
  "Message": {
  "Id" : "111111",
  "country": "ENG"
  }
}
{
  "Message": {
  "Id" : "222222",
  "country": "USA"
  }
}
{
  "Message": {
  "Id" : "333333",
  "country": "RPA"
  }
}

不幸的是,它没有预期的工作方式,因为它只找到文件test.json(Id:11111)中的第一个JSON对象并将其转换为XML。

如何将同一文件中的3个JSON对象一次转换为XML字符串???

1 个答案:

答案 0 :(得分:2)

那是因为您的输入不是有效的JSON。如果对象被包含在这样的数组中,那将是有效的:

[  
   {  
      "Message":{  
         "Id":"111111",
         "country":"ENG"
      }
   },
   {  
      "Message":{  
         "Id":"222222",
         "country":"USA"
      }
   },
   {  
      "Message":{  
         "Id":"333333",
         "country":"RPA"
      }
   }
]

然后你将实例化一个数组JSONArray jsonObj = new JSONArray(content),它会起作用。

    JSONArray jsonArray = new JSONArray(content);
    JSONObject finalJSONObj = new JSONObject();
    finalJSONObj.put("MessageItem", jsonArray);
    String xml = XML.toString(finalJSONObj, "Messages");
    System.out.println(xml);

会给你:

<Messages>
    <MessageItem>
        <Message>
            <country>ENG</country>
            <Id>111111</Id>
        </Message>
    </MessageItem>
    <MessageItem>
        <Message>
            <country>USA</country>
            <Id>222222</Id>
        </Message>
    </MessageItem>
    <MessageItem>
        <Message>
            <country>RPA</country>
            <Id>333333</Id>
        </Message>
    </MessageItem>
</Messages>