2015-04-28 67 views
4

我想解析此JSON對象:如何解析JSON對象到`地圖<字符串,HashSet的<String>>`

"{ 
    \"Rao\":[\"Q7293658\",\"\",\"Q7293657\",\"Q12953055\",\"Q3531237\",\"Q4178159\",\"Q1138810\",\"Q579515\",\"Q3365064\",\"Q7293664\",\"Q1133815\"], 
    \"Hani Durzy\":[\"\"], 
    \"Louise\":[\"\",\"Q1660645\",\"Q130413\",\"Q3215140\",\"Q152779\",\"Q233203\",\"Q7871343\",\"Q232402\",\"Q82547\",\"Q286488\",\"Q156723\",\"Q3263649\",\"Q456386\",\"Q233192\",\"Q14714149\",\"Q12125864\",\"Q57669\",\"Q168667\",\"Q141410\",\"Q166028\"], 
    \"Reyna\":[\"Q7573462\",\"Q2892895\",\"Q363257\",\"Q151944\",\"Q3740321\",\"Q2857439\",\"Q1453358\",\"Q7319529\",\"Q733716\",\"Q16151941\",\"Q7159448\",\"Q5484172\",\"Q6074271\",\"Q1753185\",\"Q7319532\",\"Q5171205\",\"Q3183869\",\"Q1818527\",\"Q251862\",\"Q3840414\",\"Q5271282\",\"Q5606181\"] 
}" 

,並用這些數據生成Map<String, HashSet<String>>

本質上我想反轉this程序。

該項目的所有代碼都可以找到on my github page here,它很短。


更新

 File f = new File("/home/matthias/Workbench/SUTD/nytimes_corpus/wdtk-parent/wdtk-examples/JSON_Output/user.json"); 

     String jsonTxt = null; 

     if (f.exists()) 
     { 
      InputStream is = new FileInputStream("/home/matthias/Workbench/SUTD/nytimes_corpus/wdtk-parent/wdtk-examples/JSON_Output/user.json"); 
      jsonTxt = IOUtils.toString(is); 


     } 
     //System.out.println(jsonTxt); 


     Gson gson=new Gson(); 


     Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>(); 
     map=(Map<String, HashSet<String>>) gson.fromJson(jsonTxt, map.getClass()); 

     //// \\ // ! PRINT IT ! // \\ // \\ // \\ // \\ // \\ // \\ 
     for (Map.Entry<String, HashSet<String>> entry : map.entrySet()) 
     { 
      System.out.println(entry.getKey()+" : " + Arrays.deepToString(map.entrySet().toArray())); 
     } 
+0

告訴我們你的java代碼。 –

回答

4

使用Gson

Gson gson = new Gson(); 
String json = "<YOUR_JSON_STRING_HERE>"; 
Map<String, HashSet<String>> map = new HashMap<String, HashSet<String>>(); 
map = (Map<String, HashSet<String>>) gson.fromJson(json, map.getClass()); 

更新:

使用TypeToken

Type type = new TypeToken<Map<String, HashSet<String>>>(){}.getType(); 
map = (Map<String, HashSet<String>>) gson.fromJson(json, type); 

或者你可以分析它...

  • 創建的JSONObject
  • 對象在jsonObj.keys()創建HashMap
  • 迭代的對象,併爲每個key得到valuejsonObj.getString(key)
  • 把它放在map,如map.put(key, value)
+0

什麼是json字符串?我可以用bufferedreader在文件中讀取,並且會生成一個json字符串嗎?我從來沒有這樣做過,請原諒我 –

+0

@ S.Matthew_English是的。 – ComputerFellow

+0

我試圖按照你說的做,但我得到了一個奇怪的錯誤,我張貼了我原來的問題 –

相關問題