Tôi muốn đọc JSON
tệp này bằng java bằng thư viện json simple.
JSON
Tệp của tôi trông như thế này:
[
{
"name":"John",
"city":"Berlin",
"cars":[
"audi",
"bmw"
],
"job":"Teacher"
},
{
"name":"Mark",
"city":"Oslo",
"cars":[
"VW",
"Toyata"
],
"job":"Doctor"
}
]
Đây là mã java tôi đã viết để đọc tệp này:
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();
}
}
}
Nhưng tôi nhận được ngoại lệ sau:
Ngoại lệ trong luồng "main" java.lang.ClassCastException: org.json.simple.JSONArray không thể được truyền tới org.json.simple.JSONObject tại javaapplication1.JavaApplication1.main (JavaApplication1.java:24)
Ai đó có thể cho tôi biết tôi đang làm gì sai không? Toàn bộ tệp là một mảng và có các đối tượng và một mảng khác (ô tô) trong toàn bộ mảng của tệp. Nhưng tôi không biết làm cách nào để có thể phân tích cú pháp toàn bộ mảng thành một mảng java. Tôi hy vọng ai đó có thể giúp tôi với dòng mã mà tôi đang thiếu trong mã của mình.
Cảm ơn