java - 读取具有多个属性的 JSON 文件

标签 java arrays json

我正在尝试读取一个包含一系列不同自行车的 JSON 文件。尝试将自行车打印到 Java 控制台时,我不断收到空点异常。我打算把所有的自行车都制成物体,但现在只是看看如何打印出来。

public static void main(String[] args) {

    JSONParser parser = new JSONParser();

    try {
        Object obj = parser.parse(new FileReader("src/bikes.json"));

        JSONObject jsonObject = (JSONObject) obj;
        //System.out.println(jsonObject);

        JSONArray bikeList = (JSONArray) jsonObject.get("BikeList");

        Iterator<String> iterator = bikeList.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParseException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

JSON 文件:

 {
    "Search": {
        "BikeList": [
            {
                "weight": "14.8",
                "colour": "Blue",
                "price": 149.99,
                "name": "Hybrid Pro"
            },
            {
                "weight": "15.8",
                "colour": "Red",
                "price": 249.99,
                "name": "Slant comp"
            },
            {
                "weight": "17.9",
                "colour": "Pink",
                "price": 500.00,
                "name": "Charm"
            }
        ]
    }
}

最佳答案

首先您必须获得“搜索”对象。而且你不能只打印对象。您需要获取所有属性:

public static void main(String[] args) {

        JSONParser parser = new JSONParser();

        try {
            Object obj = parser.parse(new FileReader("src/bikes.json"));

            JSONObject jsonObject = (JSONObject) obj;
            // System.out.println(jsonObject);

            JSONObject search = (JSONObject) jsonObject.get("Search");
            JSONArray bikeList = (JSONArray) search.get("BikeList");

            for (int i = 0; i < bikeList.size(); i++) {
                JSONObject bike = (JSONObject) bikeList.get(i);
                System.out.println("********************");
                System.out.println("Weight: " + bike.get("weight"));
                System.out.println("Colour: " + bike.get("colour"));
                System.out.println("Price: " + bike.get("price"));
                System.out.println("Name: " + bike.get("name"));
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } 
    }

关于java - 读取具有多个属性的 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485929/

相关文章:

javascript - 使用 Javascript 和 Google AppS 脚本均匀/交替合并多个数组

c - 如何在C编程中将两个二维字符串数组合并为一个?

c++ - rapidjson 提取键和值

java - Quartz 作业中的 RequestedScope

java - 正则表达式验证 - 显示违规字符。 javax.验证

java - 为什么我在压缩和解压后没有得到我的原始字符串?

java - ClassNotFoundException:通过 ANT 构建 JAR 文件中的主类

arrays - 如何对代表月份和年份的字符串数组进行排序?

json - 使用 json4s 将 scala 对象转换为 json

php - Json 与 jquery