# JSON File auslesen mit Java



## Lia (26. Apr 2019)

Hi ihr lieben,

ich hab da mal wieder eine Frage xD

Ich habe eine JSON File


```
{

"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:

```
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


----------



## kneitzel (26. Apr 2019)

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.


----------



## Lia (26. Apr 2019)

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


----------



## kneitzel (26. Apr 2019)

Also ich habe das jetzt eben einfach einmal kurz getestet:

Meine JsonTestApp Klasse:

```
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:

```
{
  "kunden" : [
    {
        "name" : "lia"
        "ort" : "ham"
    },
    {
        "name" : "ero"
        "ort" : "limb"
    }
  ]
}
```

Und wenn ich es laufen lasse:

```
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?


----------



## Lia (26. Apr 2019)

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 (26. Apr 2019)

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


----------



## Lia (26. Apr 2019)

nein alles super, vielen Dank !


----------



## Lia (26. Apr 2019)

@kneitzel ich hätte da doch nochmal eine Frage 

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


```
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


----------



## mihe7 (26. Apr 2019)

```
if (list.contains(name)) {
...
}
```


----------



## Lia (26. Apr 2019)

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


----------



## mihe7 (26. Apr 2019)

Äh, welche Dateiendung von welchen beiden Strings?!?


----------



## Lia (26. Apr 2019)

@mihe7 hehe Alles gut, hab's hinbekommen xD ich sorge immer für Verwirrung sorry xDD


----------

