Search Value in Json

Winfo606

Mitglied
Guten Tag Zusammen,

ich habe ein Problem beim Parsing einer Json-Datei / Json-String.

Ich habe zum Beispiel folgenden Json-String, den ich bereits eingelesen habe.

Code:
{
    "elements":
    [
        {
            "id": "1234",
            "Key": "1234-name2",  
             "name": "name2",
            "projectName": "TestProject",       
        },
        {
            "id": "5678",
            "applicationKey": "5678-name2",
            "name": "name2",
            "projectName": "TestProject2",
        },
       {
            "id": "9101112",
            "applicationKey": "9101112-name3",
            "name": "name3",
            "projectName": "TestProject3",
        },
    ],
    "totalSize": 3
}

Nun möchte ich die Json nach "Testproject2" durchsuchen und wenn er fündig wird, soll er mit noch zusätzlich das Attribut "name" und "id" ausgeben.
Also in diesem Beispiel:
Suche nach "TestProject2" und Ausgabe "name2" und "5678".

Ist das möglich?

Ich hab schon versucht das irgendwie über den ObjectMapper zu versuchen.
Code:
JsonNode node = new ObjectMapper().readTree(JsonString);
Allerdings weiß ich dann nicht, wie ich weiter verfahren muss.
 
Wieso willst du mit dem JSON arbeiten? Das macht man nicht. JSON ist ein transport format. Lese das JSON z.B. in eine ArrayList<myObject> ein und arbeite dann damit. Da braucht du dir dann nur das Object raussuchen das du brauchst und hast direkt Zugriff aus alle anderen Attribute.

Gruß

Claus
 
Ich hole mir über ein HTTPGet-Request den Json-Inhalt (Accept: application/json; Content-Type: application/json).

Meinst du dann diesen Inhalt in einen Array?

Vielen Dank für die schnelle Antwort!
 
Ich habe jetzt ein gutes Beispiel hier gefunden.

Dieser hat den folgenden Json String verwendet:

Code:
String jsonString  = "{" +
                                "   \"MyResponse\": {" +
                                "       \"count\": 3," +
                                "       \"listTsm\": [{" +
                                "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," +
                                "           \"simpleid\": 1," +
                                "           \"name\": \"vignesh1\"" +
                                "       }," +
                                "       {" +
                                "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," +
                                "           \"simpleid\": 2," +
                                "           \"name\": \"vignesh2\"" +
                                "       }," +
                                "       {" +
                                "           \"id\": \"b90c6218-73c8-30bd-b532-5ccf435da766\"," +
                                "           \"simpleid\": 3," +
                                "           \"name\": \"vignesh3\"" +
                                "       }]" +
                                "   }" +
                                "}";

Dann habe ich den Code so abgeändert, dass ich zusätzlich noch Attribute auslesen kann.

Code:
               JSONObject jsonObject = new JSONObject(jsonString  );
                        JSONObject myResponse = jsonObject.getJSONObject("
MyResponse
");
                        JSONArray tsmresponse = (JSONArray) myResponse.get("listTsm");
                        ArrayList<String> list = new ArrayList<String>();
                        for(int k=0; k<tsmresponse.length(); k++){
                            list.add(tsmresponse.getJSONObject(k).getString("name"));
                            System.out.println(list.get(k));
                            if (tsmresponse.getJSONObject(k).getString("name").equalsIgnoreCase("vignesh2")){
                                System.out.println(tsmresponse.getJSONObject(k).getString("id"));
                            }


Allerdings wenn ich das auf meinen Json String anpassen möchte, bekomme ich immer nur "JSONObject["elements"] is not a JSONObject."

Warum ist mein JSON-String kein JSON-Object ? :-(
 
Ich hab es nun hinbekommen, danke!

Code:
                        JSONObject jsonObject = new JSONObject(PaListContent);                       
                        JSONArray myResponse = jsonObject.getJSONArray("elements");
                       
                        ArrayList<String> list = new ArrayList<String>();

                        for(int k=0; k<myResponse.length(); k++){
                            list.add(myResponse.getJSONObject(k).getString("name"));
                           
                            if (myResponse.getJSONObject(k).getString("name").equalsIgnoreCase("XXXX")){
                                System.out.println(myResponse.getJSONObject(k).getString("id"));
                            }
 

Zurück
Oben