JSON File auslesen mit Java

L

Lia

Bekanntes Mitglied
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 :)
 
K

kneitzel

Gast
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.
 
L

Lia

Bekanntes Mitglied
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
 
K

kneitzel

Gast
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?
 
L

Lia

Bekanntes Mitglied
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 :)
 
K

kneitzel

Gast
Gerne. Sorry, wenn ich mich in der ersten Antwort nicht klar genug ausgedrückt hatte.
 
L

Lia

Bekanntes Mitglied
@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:
L

Lia

Bekanntes Mitglied
super @mihe7 danke das funktioniert. Die dateiendungen sind aber unterschiedlich von beiden Strings kann man das irgendwie "ignorieren"?
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben