您如何使用 Processing JSON 对象解析如下所示的嵌套 JSON 文件?

How do you parse a nested JSON file like below using Processing JSON object?

如何使用 Processing JSON 对象解析嵌套的 JSON 文件?我想弄清楚如何解析多级 JSON。

{
  "info": {
    "description": "COCO 2014 Dataset",
    "url": "http://cocodataset.org",
    "version": "1.0",
    "year": 2014,
    "contributor": "COCO Consortium",
    "date_created": "2017/09/01"
  },
  "images": [
    {
      "license": 5,
      "file_name": "COCO_train2014_000000057870.jpg",
      "coco_url": "http://images.cocodataset.org/train2014/COCO_train2014_000000057870.jpg",
      "height": 480,
      "width": 640,
      "date_captured": "2013-11-14 16:28:13",
      "flickr_url": "http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg",
      "id": 57870
    },

您可以使用 Gson 到 parse/deserialize 来建模 class。

或者如果你想手动解析,那么你必须先解析一个 json 对象,然后你必须从一个解析过的 json.

中再次解析它

例如

JsonObject jsonObject = new JsonObject(jsonString);
JsonObject infoObject = jsonObject.getJsonObject("info");
String description = infoObject.getString("description");

查看 JSONObject and JSONArray 以查看每个页面上的可用方法,每个方法都有文档和示例。

关于您的结构,这里有一个关于如何访问嵌套 JSON 对象和数组的快速片段:

// assume data is a JSONObject pointing to the loaded json data (via loadJSONObject / JSONObject.parse(), etc.

// access the info object
JSONObject info = data.getJSONObject("info");
// access the images array object
JSONArray images = data.getJSONArray("images");
// access a string inside an object
println(info.getString("description"));
// access a JSON object inside a JSON array
JSONObject firstImage = images.getJSONObject(0);

// acess an integer
println(firstImage.getInt("id"));
// ... and a string again
println(firstImage.getString("flickr_url"));

如果您将加载的 JSONObject 变量命名为 data,粘贴上面的代码段和 运行,它应该打印:

COCO 2014 Dataset
57870
http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg