如何使用Java访问json中的嵌套字段?
我有一个很大的JSON文件(demo.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", "
{
"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依赖项。你认为这可能是个问题吗?查。错误的库。这是你的回复。