JSON File auslesen mit Java

Bitte aktiviere JavaScript!
Hi ihr lieben,

ich hab da mal wieder eine Frage xD

Ich habe eine JSON File

Code:
{

"kunden" : [


{

"name" : "lia"

"ort" : "ham"

},


{

"name" : "ero"

"ort" : "limb"

}, ....


]

}
(Ich hoffe die Klammern sind so korrekt)

Dieses Array würde ich gerne mit Java auslesen bzw ausgeben.

Wenn ich es so probiere:
Code:
Object obj = parser.parse(new FileReader("path"));

JSONObject jsonObject = (JSONObject) obj;

JSONArray namearr = (JSONArray) jsonObject.get("kunden");


for(Object objinarr : namearr){

//hier gibt er mir den ganzen Inhalt aus.

}
Ich würde gerne nur den Wert "name" aus der json Datei auslesen, wie genau würde das funktionieren. Danke für alle Tipps :)

Schönes Wochenende allen :)
 
Wenn Du nu den Namen auslesen willst, dann kannst Du da doch weiter auf dein objinarr (Vorschlag: Nutze camelCase: objInArr - dann ist das besser lesbar) zugreifen. Das ist ja nicht nur ein Object sondern ein JSONObbject. Und wenn Du es als JSONObject nimmst, hast Du wieder die get Methode, um eben den "name" auszulesen.
 
Hi kneitzel, danke für deine Antwort :)

Wenn ich aber in meiner Schleife^^ oben objinarr. mache, bekomme ich die get Methode nicht.. und wenn ich es als JSONObject nutze(welches das get anbietet) bekomme ich null zurück

lg
 
Also ich habe das jetzt eben einfach einmal kurz getestet:

Meine JsonTestApp Klasse:
Java:
package jsontest;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;

public class JsonTestApp {
    public static void main(String[] args) {
        try {
            JSONParser parser = new JSONParser();
            Object obj = parser.parse(new FileReader("./temp/test.json"));
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray namearr = (JSONArray) jsonObject.get("kunden");
            for (Object objInArr : namearr) {
                JSONObject jsonKunde = (JSONObject) objInArr;
                System.out.println(jsonKunde.get("name"));
            }
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }
}
Mein test.json, welches ich lade:
JSON:
{
  "kunden" : [
    {
        "name" : "lia"
        "ort" : "ham"
    },
    {
        "name" : "ero"
        "ort" : "limb"
    }
  ]
}
Und wenn ich es laufen lasse:
Code:
13:06:07: Executing task 'JsonTestApp.main()'...

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes

> Task :JsonTestApp.main()
lia
ero

BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
13:06:07: Task execution finished 'JsonTestApp.main()'.
Kannst Du uns Details zeigen zu dem Code, der nicht funktioniert?
 
  • Like
Reactions: Lia
Super, genau das was ich haben wollte. Der cast Vorgang in ein JSON Objekt hat gefehlt um an die .get Methode ranzukommen.. hab's mir gedacht ist auch logisch xD danke :)
 
@kneitzel ich hätte da doch nochmal eine Frage :D

die Variable jsonObject erwartet ja ein Object.. mit .get("name") bekomme ich ja dann aus der JSON Datei den Namen. Ich würde diesen Namen dann gerne mit einer anderen String ArrayListe vergleichen, wie genau muss ich da vorgehen ??

Wäre das so machbar

Code:
String name = (String) jsonKunde.get("name");
if (name.equals(ClassNames.getNamesofStakeholder(File))){
//also es geht darum zu schauen ob die Namen der Kunden in der ArrayListe aus ner anderen Klasse in dem String im JSON Objekt übereinstimmen also gleich sind
}
Danke :)
 
Zuletzt bearbeitet:
super @mihe7 danke das funktioniert. Die dateiendungen sind aber unterschiedlich von beiden Strings kann man das irgendwie "ignorieren"?
 
@mihe7 hehe Alles gut, hab's hinbekommen xD ich sorge immer für Verwirrung sorry xDD
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben