如何在Java中解析JSON

主宰稳场 提交于 2019-12-14 13:50:52

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我有以下JSON文本。 如何解析它以获得pageNamepagePicpost_id等的值?

{
   "pageInfo": {
         "pageName": "abc",
         "pagePic": "http://example.com/content.jpg"
    },
    "posts": [
         {
              "post_id": "123456789012_123456789012",
              "actor_id": "1234567890",
              "picOfPersonWhoPosted": "http://example.com/photo.jpg",
              "nameOfPersonWhoPosted": "Jane Doe",
              "message": "Sounds cool. Can't wait to see it!",
              "likesCount": "2",
              "comments": [],
              "timeOfPost": "1234567890"
         }
    ]
}

#1楼

quick-json解析器非常简单,灵活,快速且可自定义。 试试吧

特征:

  • 符合JSON规范(RFC4627)
  • 高性能JSON解析器
  • 支持灵活/可配置的解析方法
  • 可配置验证任何JSON层次结构的键/值对
  • 易于使用#占地面积小
  • 提高开发人员友好性并易于跟踪异常
  • 可插拔的自定义验证支持-可以通过在遇到时配置自定义验证器来验证键/值
  • 验证和非验证解析器支持
  • 支持两种类型的配置(JSON / XML),以使用快速JSON验证解析器
  • 需要JDK 1.5
  • 不依赖外部库
  • 通过对象序列化支持JSON生成
  • 支持在解析过程中选择集合类型

可以这样使用:

JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);

#2楼

我认为最佳做法应该是通过仍在进行中的官方Java JSON API


#3楼

org.json库易于使用。 下面的示例代码:

import org.json.*;


JSONObject obj = new JSONObject(" .... ");
String pageName = obj.getJSONObject("pageInfo").getString("pageName");

JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++)
{
    String post_id = arr.getJSONObject(i).getString("post_id");
    ......
}

您可以从以下位置找到更多示例: Java解析JSON

可下载的jar: http//mvnrepository.com/artifact/org.json/json


#4楼

这让我很震惊。 您可以只将包含JSON的String传递给默认org.json包中的JSONObject的构造函数。

JSONArray rootOfPage =  new JSONArray(JSONString);

做完了 放下麦克风 。 这也适用于JSONObjects 。 之后,您可以使用Objectsget()方法浏览Objects的层次结构。


#5楼

  1. 如果要从JSON创建Java对象,反之亦然,请使用GSON或JACKSON第三方jar等。

    //from object to JSON Gson gson = new Gson(); gson.toJson(yourObject); // from JSON to object yourObject o = gson.fromJson(JSONString,yourObject.class);
  2. 但是,如果只是想解析JSON字符串并获取一些值,(或从头开始创建JSON字符串以通过电线发送),只需使用包含JsonReader,JsonArray,JsonObject等的JaveEE jar。您可能要下载该实现规格,例如javax.json。 使用这两个jar,我可以解析json并使用值。

    这些API实际上遵循XML的DOM / SAX解析模型。

    Response response = request.get(); // REST call JsonReader jsonReader = Json.createReader(new StringReader(response.readEntity(String.class))); JsonArray jsonArray = jsonReader.readArray(); ListIterator l = jsonArray.listIterator(); while ( l.hasNext() ) { JsonObject j = (JsonObject)l.next(); JsonObject ciAttr = j.getJsonObject("ciAttributes");
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!