Voglio leggere questo JSON
file con java usando la libreria semplice json.
Il mio JSON
file ha questo aspetto:
[
{
"name":"John",
"city":"Berlin",
"cars":[
"audi",
"bmw"
],
"job":"Teacher"
},
{
"name":"Mark",
"city":"Oslo",
"cars":[
"VW",
"Toyata"
],
"job":"Doctor"
}
]
Questo è il codice java che ho scritto per leggere questo file:
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();
}
}
}
Ma ottengo la seguente eccezione:
Eccezione nel thread "main" java.lang.ClassCastException: org.json.simple.JSONArray non può essere trasmesso a org.json.simple.JSONObject in javaapplication1.JavaApplication1.main (JavaApplication1.java:24)
Qualcuno può dirmi cosa sto facendo di sbagliato? L'intero file è un array e ci sono oggetti e un altro array (automobili) nell'intero array del file. Ma non so come posso analizzare l'intero array in un array java. Spero che qualcuno possa aiutarmi con una riga di codice che manca nel mio codice.
Grazie