2015-08-28 56 views
1
{ 
    "Servers": [ 
     { 
      "server": "server1", 
      "port": "8000" 
     }, 
     { 
      "server": "server2", 
      "port": "8000" 
     }, 
     { 
      "server": "server3", 
      "port": "8000" 
     } 
    ] 
} 

我試圖把這個JSON文件到使用一個HashMap把JSON數組的HashMap:用java

Map<String,Object> map = mapper.readValue(jsonfile, new TypeReference<Map<String, Object>>() {}); 

jsonfile這裏表示其中JSON文件的存儲路徑。 請建議如何將這個json文件放入HashMap中。

回答

0

最簡單和維護的解決方案是使用JSON解析庫如GSON

一般來說,你必須創建bean對象將定義JSON文件的結構之一,那麼你就可以分析它像這

BufferedReader br = new BufferedReader(
     new FileReader("c:\\file.json")); 

    //convert the json string back to object 
    DataObject obj = gson.fromJson(br, DataObject.class); 
0

我建議使用Gson以及。

如果您使用Gradle作爲,將其導入到您的項目(build.gradle of your app)中;如果你不使用搖籃

compile 'com.google.code.gson:gson:2.3.1' 

,看到Gson docs here爲其他的構建工具。

創建一個容器對象來解析你的Json並保存你的值;

class Server { 
    String server; 
    int port; 
    // I did not take encapsulation into account for brevity 
} 

然後用Gson來解析你的Server對象列表;

BufferedReader br = new BufferedReader(new FileReader("path_to_your_file")); 
Gson gson = new Gson(); 
ArrayList<Server> serverList = gson.fromJson(br, new TypeToken<List<Server>>(){}.getType()); 

serverList將包含您的服務器對象的列表。