Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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 NetBeans中解析JSON字符串_Java_Json_String_Parsing_Netbeans - Fatal编程技术网

在Java NetBeans中解析JSON字符串

在Java NetBeans中解析JSON字符串,java,json,string,parsing,netbeans,Java,Json,String,Parsing,Netbeans,谁能告诉我如何从每个元标记中获取og:description,og:title,book:release\u date,book:author,以及book:isbn的值?(请参阅下面的JSON内容)最终,这些值将显示在一个表中,因此我需要它们作为Java对象(字符串) 到目前为止,我已经尝试过使用许多外部lib,但这是我第一个使用JSON的项目,所以我不知道它们是如何工作的 供您参考,我正在使用NetBeans并制作一个restfulweb服务 我已成功地使用以下代码将其转换为JSON字符串:

谁能告诉我如何从每个元标记中获取
og:description
og:title
book:release\u date
book:author
,以及
book:isbn
的值?(请参阅下面的JSON内容)最终,这些值将显示在一个表中,因此我需要它们作为Java对象(字符串)

到目前为止,我已经尝试过使用许多外部lib,但这是我第一个使用JSON的项目,所以我不知道它们是如何工作的

供您参考,我正在使用NetBeans并制作一个restfulweb服务

我已成功地使用以下代码将其转换为JSON字符串:

    JSONObject obj = new JSONObject(builder.toString());
    String theJsonString = obj.toString();
但当我尝试这样做时:

    ObjectMapper mapper = new ObjectMapper();
                  Map<String,Object> data = mapper.readValue(theJsonString.getBytes(), Map.class);
                  Map items = (Map) data.get("items");
                  Map pagemap = (Map) items.get("pagemap");
                  Map metatags = (Map) pagemap.get("metatags");
                  String b_title = (String) metatags.get("og:title");

     System.out.println(b_title);
以下是json内容:

{
"items": [
{
"pagemap": {
"metatags": [
 {
  "og:description": "A boxed set, including the titles 'Harry Potter and the Philosopher's Stone', 'Harry Potter and the Chamber of Secrets', 'Harry Potter and the Prisoner of Azkaban', 'Harry Potter and the Goblet of Fire', 'Harry Potter and the Order of the Phoenix', 'Harry Potter and the Half-Blood Prince' and 'Harry Potter and the Deathly Hallows'.",
  "og:title": "Harry Potter Adult Paperback Boxed Set: Adult Edition (Paperback)",
  "book:release_date": "2008-10-06",
  "book:author": "J. K. Rowling",
  "book:isbn": "9780747595847"
 }
]
}
},
 {
"pagemap": {
"metatags": [
 {
  "og:description": "Offers an in-depth look at the craftsmanship, artistry, technology, and more than ten-year journey that took the world's bestselling fiction from page to screen. From elaborate sets and luxurious costumes to advanced special effects and film making techniques, this title chronicles all eight films.",
  "og:title": "Harry Potter: Page to Screen (Hardback)",
  "book:release_date": "2011-10-25",
  "book:author": "Bob McCabe",
  "book:isbn": "9780857687753"
 }
 ]
}
 }
 ]
}

如有任何意见,将不胜感激。请以简单的方式告诉我,因为我是一名初学者(刚刚接触NetBeans 2个月)。非常感谢

如果您查看json
是一个数组,那么相应的java表示是一个列表。因此,您需要将
项目
作为
列表

List items = (List ) data.get("items");
同样的逻辑也适用于
元标记

List metatags = (List) pagemap.get("metatags");
使用上述更改,请尝试以下操作

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> data = mapper.readValue(file, Map.class);
List<Map<String, Object>> items = (List) data.get("items");
for (Map<String, Object> item : items) {
    Map pagemap = (Map) item.get("pagemap");
    List<Map<String, Object>> metatags = (List) pagemap.get("metatags");
    for (Map<String, Object> tag : metatags) {
        String b_title = (String) tag.get("og:title");
        System.out.println(b_title);
    }

}
ObjectMapper mapper=new ObjectMapper();
Map data=mapper.readValue(文件,Map.class);
List items=(List)data.get(“items”);
用于(地图项目:项目){
Map pagemap=(Map)item.get(“pagemap”);
List metatags=(List)pagemap.get(“metatags”);
用于(地图标记:元标记){
String b_title=(String)tag.get(“og:title”);
系统输出打印LN(b_标题);
}
}

创建一个java类,即item.java并编写行

Item item= mapper.readValue(new File(theJsonString.getBytes()), Item .class);

然后阅读json

哦!我通过使用谷歌定制搜索API的GET请求获得了json内容。。仅提供额外信息,以防在某些方面有所帮助!:谢谢你!!!!我现在真的哭了。。非常感谢你,阿伦先生!!:)亲爱的Biswajit先生,感谢您的友好回复:)在Arun先生的帮助下,我找到了解决方案。。不过,我可能会在下一个项目中使用您的解决方案。祝你今天愉快:)
Item item= mapper.readValue(new File(theJsonString.getBytes()), Item .class);