JSON
json 간단한 라이브러리를 사용하여 Java 로이 파일 을 읽고 싶습니다 .
내 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();
}
}
}
그러나 다음 예외가 발생합니다.
스레드 "main"java.lang.ClassCastException의 예외 : org.json.simple.JSONArray를 javaapplication1.JavaApplication1.main (JavaApplication1.java:24)에서 org.json.simple.JSONObject로 캐스트 할 수 없습니다.
누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 전체 파일은 배열이며 파일의 전체 배열에는 객체와 다른 배열 (자동차)이 있습니다. 하지만 전체 배열을 Java 배열로 구문 분석하는 방법을 모르겠습니다. 누군가가 내 코드에서 누락 된 코드 라인으로 나를 도울 수 있기를 바랍니다.
감사