2017-05-18 34 views
0

直接的方式讓我們假設我有以下的地圖是否有轉換地圖<字符串,列表<String>>成JSON字符串(使用javax.json庫)

Map<String, List<String>> map = new HashMap<>(); 

List<String> list = new ArrayList<>(); 
list.add("First in list"); 
list.add("Second in list"); 

map.put("First in map", list); 

所以,我怎麼可以轉換它在一個直接使用JSON字符串的方式使用javax.json庫?

+0

應該javax.json出於某種原因?或者可能是其他? –

+1

是的,我只想使用JDK java庫而不是其他外部庫,我知道使用Gson lib或使用jackson lib直接轉換它的許多方法,但我只想知道關於是否可以使用javax.json或不是,因爲我試圖使用javax.json轉換它,但我失敗:( –

+5

請注意,'javax.json'不是JDK的一部分,它是Java EE,而不是Java SE。 –

回答

1

我只是嘗試以下

 Map<String, List<String>> map = new HashMap<>(); 

     List<String> list = new ArrayList<>(); 
     list.add("First in list"); 
     list.add("Second in list"); 

     List<String> list1 = new ArrayList<>(); 
     list1.add("First in secondlist"); 
     list1.add("Second in secondlist"); 

     map.put("First in map", list); 
     map.put("Second in map", list1); 

     final JsonArrayBuilder outerJsonArray = Json.createArrayBuilder(); 

     map.forEach((key, innerList) -> { 

      JsonArrayBuilder innerJsonArray = Json.createArrayBuilder(); 
      innerList.forEach(item -> innerJsonArray.add(item)); 

      outerJsonArray.add(Json.createObjectBuilder().add(key, innerJsonArray)); 

     }); 

     JsonArray usersJson = outerJsonArray.build(); 
     System.out.println(usersJson.toString()); 

,並將所得JSON數組(缺少插入順序)

[ 
    { 
    "Second in map": [ 
     "First in secondlist", 
     "Second in secondlist" 
    ] 
    }, 
    { 
    "First in map": [ 
     "First in list", 
     "Second in list" 
    ] 
    } 
] 
+0

Tha這是一個正確的答案,實際上我之前嘗試過,所以感謝您的時間來評論這個答案,無論如何,我正在尋找答案,它讀取地圖直接不循環,並以任何方式創建JSON,例如只是爲了讓我的觀點像Json.read(地圖)一樣簡單(當然這不是正確的代碼,但我只是想達到你的觀點),再次感謝:) –

相關問題