Quiero leer este JSON
archivo con java usando la biblioteca json simple.
Mi JSON
archivo se ve así:
[
{
"name":"John",
"city":"Berlin",
"cars":[
"audi",
"bmw"
],
"job":"Teacher"
},
{
"name":"Mark",
"city":"Oslo",
"cars":[
"VW",
"Toyata"
],
"job":"Doctor"
}
]
Este es el código java que escribí para leer este archivo:
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();
}
}
}
Pero obtengo la siguiente excepción:
Excepción en el hilo "principal" java.lang.ClassCastException: org.json.simple.JSONArray no se puede convertir a org.json.simple.JSONObject en javaapplication1.JavaApplication1.main (JavaApplication1.java:24)
¿Alguien puede decirme qué estoy haciendo mal? Todo el archivo es una matriz y hay objetos y otra matriz (coches) en toda la matriz del archivo. Pero no sé cómo puedo analizar toda la matriz en una matriz java. Espero que alguien pueda ayudarme con una línea de código que me falta en mi código.
Gracias
fuente
a.get(0)
) porque era la coincidencia más cercana a su código original. La documentación json-simple dice aJSONArray
isjava.util.List
, por lo que puede iterar sobre los elementos como lo haría con una lista normal. ¿Es eso suficiente para continuar?parser
¿de qué biblioteca (importación) es?