我正在尝试读取一个包含一系列不同自行车的 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/