簡體   English   中英

如何使用Java訪問json中的嵌套字段?

[英]How to access the nested field in json using Java?

我有一個很大的JSON文件(demo.json)。 看起來是這樣的:

{  
   "preview":false,
   "result":{  
      "search_term":"rania",
      "request_time":"Sat Apr 01 12:47:04 -0400 2017",
      "request_ip":"127.0.0.1",
      "stats_type":"stats",
      "upi":"355658761",
      "unit":"DR",
      "job_title":"Communications Officer",
      "vpu":"INP",
      "organization":"73",
      "city":"Wash",
      "country":"DC",
      "title":"Tom",
      "url":"www.demo.com",
      "tab_name":"People-Tab",
      "page_name":"PEOPLE",
      "result_number":"5",
      "page_num":"0",
      "session_id":"df234f468cb3fe8be",
      "total_results":"5",
      "filter":"qterm=rina",
      "_time":"2017-04-01T12:47:04.000-0400"
   }
}
{"preview"......}
{"preview"......}
....

我想訪問結果中的搜索詞和page_name,並將它們轉換為字符串。 下面是我的java代碼不起作用:

BufferedReader br = new BufferedReader(new FileReader("demo.json"));
String line;
while ((line = br.readLine()) != null) {

                JSONParser parser = new JSONParser();
                Object obj = parser.parse(line);
                JSONObject jsonObject = (JSONObject) obj;
                String searchterm= (String) jsonObject.get("search_term");
                String page_name = (String) jsonObject.get("page_name");
}

我不熟悉如何訪問嵌套字段並將其轉換為字符串。 任何幫助表示贊賞。

boolean preview = jsonObject.get("preview");
JSONObject result = jsonObject.getJSONObject("result");
String search_term = result.getString("search_term");
String page_name = result.getString("page_name");

您可以使用Gson之類的庫將數據轉換為Map

    BufferedReader br = new BufferedReader(new FileReader("demo.json"));
String line;
StringBuilder builder=new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);

} 

       Type type = new TypeToken<Map<String, String>>(){}.getType();
       Map<String, String> myMap = gson.fromJson(builder.toString(), type);

您可以使用myMap獲取json鍵的值。 對於嵌套鍵,您可以再次將其再次轉換為Map。

使用ObjectMapper將JSON轉換為PoJo,然后使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM