我想JSON使用JSON简单库使用Java 读取此文件。
JSON
我的JSON文件如下所示:
[ { "name":"John", "city":"Berlin", "cars":[ "audi", "bmw" ], "job":"Teacher" }, { "name":"Mark", "city":"Oslo", "cars":[ "VW", "Toyata" ], "job":"Doctor" } ]
这是我为读取此文件而编写的Java代码:
package javaapplication1; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Iterator; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class JavaApplication1 { public static void main(String[] args) { JSONParser parser = new JSONParser(); try { Object obj = parser.parse(new FileReader("c:\\file.json")); JSONObject jsonObject = (JSONObject) obj; String name = (String) jsonObject.get("name"); System.out.println(name); String city = (String) jsonObject.get("city"); System.out.println(city); String job = (String) jsonObject.get("job"); System.out.println(job); // loop array JSONArray cars = (JSONArray) jsonObject.get("cars"); Iterator<String> iterator = cars.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } } }
但是我得到以下异常:
线程“主”中的异常java.lang.ClassCastException:org.json.simple.JSONArray无法转换为javaapplication1.JavaApplication1.main(JavaApplication1.java:24)上的org.json.simple.JSONObject。
javaapplication1.JavaApplication1.main(JavaApplication1.java:24)
org.json.simple.JSONObject
有人可以告诉我我做错了吗?整个文件是一个数组,并且文件的整个数组中包含对象和另一个数组(汽车)。但是我不知道如何将整个数组解析为java数组。我希望有人可以帮助我解决我的代码中缺少的代码行。
如你所说,JSON Blob的最外层是一个数组。因此,你的解析器将返回JSONArray。然后可以JSONObject从数组中获取s …
JSONArray
JSONObject
JSONArray a = (JSONArray) parser.parse(new FileReader("c:\\exer4-courses.json")); for (Object o : a) { JSONObject person = (JSONObject) o; String name = (String) person.get("name"); System.out.println(name); String city = (String) person.get("city"); System.out.println(city); String job = (String) person.get("job"); System.out.println(job); JSONArray cars = (JSONArray) person.get("cars"); for (Object c : cars) { System.out.println(c+""); } }