如何使用JSON-Java(org.json)库读取JSON文件?

在此示例中,我们将使用JSON-Java(org.json)库读取或解析JSON文件。首先,我们开始InputStream使用getResourceAsStream()方法读取JSON文件。接下来,我们JSONTokener从输入流构造一个,并创建一个实例JSONObject来读取JSON条目。

我们可以用这样的方法getString(),getInt(),getLong(),等来读取JSON文件的键值。该getJSONArray()方法允许我们读取JSONArray对象中返回的值的列表。可以对其进行迭代以获取键表示的每个值。让我们看看下面的详细代码片段。

package org.nhooo.example.json;

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;

import java.io.InputStream;

public class ReadJSONString {
    public static void main(String[] args) {
        // info.json
        // {
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,"id": "1",
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,"name": "Alice",
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,"age": "20",
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,"courses": [
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,  "Engineering",
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,  "Finance",
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,  "Chemistry"
        //  “培训班”: [“培训班”: [“年龄”:“ 20”,“年龄”:“ 20”,“ name”:“ Alice”,“ name”:“ Alice”,“ id”:“ 1”,]
        //}
        String resourceName = "/info.json";
        InputStream is = ReadJSONString.class.getResourceAsStream(resourceName);
        if (is == null) {
            throw new NullPointerException("Cannot find resource file " + resourceName);
        }

        JSONTokener tokener = new JSONTokener(is);
        JSONObject object = new JSONObject(tokener);
        System.out.println("Id  : " + object.getLong("id"));
        System.out.println("Name: " + object.getString("name"));
        System.out.println("Age : " + object.getInt("age"));

        System.out.println("Courses: ");
        JSONArray courses = object.getJSONArray("courses");
        for (int i = 0; i < courses.length(); i++) {
            System.out.println("  - " + courses.get(i));
        }
    }
}

上面的代码片段的结果是:

Id  : 1
Name: Alice
Age : 20
Courses: 
  - Engineering
  - Finance
  - Chemistry

Maven依赖

<!-- https://repo1.maven.org/maven2/org/json/json/20180813/json-20180813.jar -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version>
</dependency>