2017-08-09 78 views
0

讓我們說我在同一個文件test.json 在這個例子中得到了很多的JSON對象我有他們的3像下面。轉換多個JSON對象從一個文件到一個XML文件一樣多的元素JSON有

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

現在,我想將這3個JSON對象轉換爲一個帶有3個元素的XML作爲字符串。 使用org.jason我的代碼是:

String content = new String(Files.readAllBytes(Paths.get("..\\myFolder\\Tests\\test.json"))); 
String xml = XML.toString(new JSONObject(content)); 

遺憾的是它不工作預期的方式,因爲它找到並從文件test.json(ID:11111)轉換爲XML只有第一個JSON對象。

我如何轉換3個JSON對象從同一個文件,一次XML字符串???

回答

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> 
+0

但後來我得到3個XML,但我需要它作爲一個XML文件中3個元素。可能嗎? – EdXX

+0

你有沒有試過我的建議?我用你得到的最終XML更新了我的答案。 – isah

+0

愛它:) :)非常感謝 – EdXX

相關問題