Ich möchte diese JSON
Datei mit Java unter Verwendung der einfachen Bibliothek von json lesen .
Meine JSON
Datei sieht folgendermaßen aus:
[
{
"name":"John",
"city":"Berlin",
"cars":[
"audi",
"bmw"
],
"job":"Teacher"
},
{
"name":"Mark",
"city":"Oslo",
"cars":[
"VW",
"Toyata"
],
"job":"Doctor"
}
]
Dies ist der Java-Code, den ich geschrieben habe, um diese Datei zu lesen:
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();
}
}
}
Aber ich bekomme folgende Ausnahme:
Ausnahme im Thread "main" java.lang.ClassCastException: org.json.simple.JSONArray kann unter javaapplication1.JavaApplication1.main (JavaApplication1.java:24) nicht in org.json.simple.JSONObject umgewandelt werden.
Kann mir jemand sagen, was ich falsch mache? Die gesamte Datei ist ein Array, und im gesamten Array der Datei befinden sich Objekte und ein anderes Array (Autos). Aber ich weiß nicht, wie ich das gesamte Array in ein Java-Array analysieren kann. Ich hoffe, jemand kann mir mit einer Codezeile helfen, die mir in meinem Code fehlt.
Vielen Dank
quelle
a.get(0)
), da dies Ihrem ursprünglichen Code am ehesten entspricht. Die json-einfache Dokumentation sagt aJSONArray
isjava.util.List
, sodass Sie die Elemente wie bei einer normalen Liste durchlaufen können. Ist das genug, um weiterzumachen?parser
Aus welcher Bibliothek (Import) ist es?Sie können die Jackson-Bibliothek verwenden und einfach diese 3 Zeilen verwenden, um Ihre JSON-Datei in Java Object zu konvertieren.
quelle
import com.fasterxml.jackson.databind.ObjectMapper;
Jackson-Datenbindung hinzufügen:
Erstellen Sie eine DTO-Klasse mit zugehörigen Feldern und lesen Sie die JSON-Datei:
quelle
Lesen aus JsonFile
quelle
Sie können Gson dafür verwenden.
GSON
ist eine Java-Bibliothek, mit der Java-Objekte in ihreJSON
Darstellung konvertiert werden können . Es kann auch verwendet werden, um a zu konvertierenJSON
Zeichenfolge in ein äquivalentes Java-Objekt .Schauen Sie sich diese Konvertierung von JSON in Java an
quelle
Verwenden Sie die einfache Google-Bibliothek.
Den folgenden Beispielcode finden Sie unten:
Verwenden Sie JSONObject für einfache JSON-ähnliche
{"id":"1","name":"ankur"}
und JSONArray für JSON-ähnliche Arrays[{"id":"1","name":"ankur"},{"id":"2","name":"mahajan"}]
.quelle
quelle
Dies kann für andere Personen hilfreich sein, die mit demselben Problem konfrontiert sind. Sie können die Datei als Zeichenfolge laden und dann die Zeichenfolge in jsonobject konvertieren, um auf die Werte zuzugreifen.
quelle
Hoffe, dieses Beispiel hilft auch
Ich habe die Java-Codierung für das folgende Beispiel für ein JSON-Array auf ähnliche Weise durchgeführt:
Das folgende json-Datenformat wird als "EMPJSONDATA.json" gespeichert.
[{"EMPNO": 275172, "EMP_NAME": "Rehan", "DOB": "29-02-1992", "DOJ": "10-06-2013", "ROLE": "JAVA DEVELOPER"},
{"EMPNO": 275173, "EMP_NAME": "GK", "DOB": "10-02-1992", "DOJ": "11-07-2013", "ROLE": "WINDOWS ADMINISTRATOR"},
{"EMPNO": 275174, "EMP_NAME": "Abiram", "DOB": "10-04-1992", "DOJ": "12-08-2013", "ROLE": "PROJECT ANALYST"}
{"EMPNO": 275174, "EMP_NAME": "Mohamed Mushi", "DOB": "10-04-1992", "DOJ": "12-08-2013", "ROLE": "PROJECT ANALYST"}]
quelle
quelle
Probe Json
Die erste If-Anweisung konvertiert die einzelnen Daten aus dem Hauptteil. Zweitens unterscheidet die if-Anweisung das JsonArray-Objekt
quelle
Lösung mit Jackson-Bibliothek. Sortierte dieses Problem, indem der json auf JSONLint.com überprüft und dann Jackson verwendet wurde. Unten ist der Code für das gleiche.
quelle
Sie können readAllBytes verwenden.
return String(Files.readAllBytes(Paths.get(filePath)),StandardCharsets.UTF_8);
quelle