Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java访问json中的嵌套字段?_Java_Json - Fatal编程技术网

如何使用Java访问json中的嵌套字段?

如何使用Java访问json中的嵌套字段?,java,json,Java,Json,我有一个很大的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", "

我有一个很大的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"......}
....
我想访问搜索词和搜索结果中的页面名称,并将它们转换为字符串。下面是我的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");
}

我不熟悉如何访问嵌套字段并将其转换为字符串。非常感谢您的帮助。

您可以使用Gson之类的库。将数据转换为地图

boolean preview = jsonObject.get("preview");
JSONObject result = jsonObject.getJSONObject("result");
String search_term = result.getString("search_term");
String page_name = result.getString("page_name");
    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);
BufferedReader br=newbufferedreader(newfilereader(“demo.json”);
弦线;
StringBuilder=新的StringBuilder();
而((line=br.readLine())!=null){
builder.append(行);
} 
Type Type=new-TypeToken(){}.getType();
Map myMap=gson.fromJson(builder.toString(),type);

可以使用myMap获取json键的值。对于嵌套键,您可以再次将其转换为映射。

用于将JSON转换为PoJo,然后使用它。

您正在尝试解析每一行。但是
{
不是有效的JSON。
“preview”:false,
也不是有效的JSON。我的JSON是有效的。我发布的只是一个例子。我想知道如何访问resultThanks中的嵌套字段搜索项以获得回复。我必须在maven中添加任何依赖项吗?我在getJSONObject“getJSONObject”上收到一个错误(字符串)对于类型JSONObject“不,您应该只导入org.json.JSONObject;我使用了指定的导入,但我收到一个错误“导入org.json.JSONObject无法解析”.我对程序的另一部分有一个maven依赖项。你认为这可能是个问题吗?查。错误的库。这是你的回复。