JSON in Integer parsen

Odakle

Mitglied
Moin, undzwar möchte ich einen integer Wert aus einem JSON Format in Java als Integer einfügen, welches jedoch nicht geht. Bei den Strings hat es geklappt.
Im unteren bsp. seht ihr den Versuch mit dem Integer, welcher jedoch in der Konsole eine Fehlermeldung erzeugt.
Mit freundlichen Grüßen

Java:
  JSONParser parser = new JSONParser();
            JSONArray makeuplist = (JSONArray) parser.parse(response.body());

            for(Object element: makeuplist) {

                int price = (int) ((JSONObject) element).get("price");
                System.out.println("Preis: "+price);

                String brand = (String) ((JSONObject) element).get("brand");
                System.out.println("Marke: "+brand);

                String name = (String) ((JSONObject) element).get("name");
                System.out.println("Name des Produktes: "+name);

                System.out.println();
            }
 
Welche Lib verwendest du denn zum Parsen des JSON?

Vermutlich muss man einen expliziten Getter für eine Number aufrufen, sowas wie getInt statt nur get oä.
 
Ein Jsonobject kann nicht nach (int) konvertiert werden, das ist klar. Gson bietet hier z.B. getAsInt() an, in der Referenzimplementierung von JSON gibt's getInt(key).
Bei Strings solltest du das übrigens auch machen, auch hier gibt's eigene Methoden. Dass das so geklappt hat, dürfte an der gewählten Implementierung liegen, aber einfach mal so zu casten ... schlechte Idee.
 
Zuletzt bearbeitet:
Tut er ja nicht. Er castet was auch immer von JSONObject#get zurückgegeben wird. Wenn es sich um die "org.json" Library handelt wäre das ein Object und das lässt sich auch so behandeln.

Also entweder ist es doch eine andere Library oder das Json entspricht nicht dem, was erwartet wird.
 
Tut er ja nicht. Er castet was auch immer von JSONObject#get zurückgegeben wird. Wenn es sich um die "org.json" Library handelt wäre das ein Object und das lässt sich auch so behandeln.

Also entweder ist es doch eine andere Library oder das Json entspricht nicht dem, was erwartet wird.
Stimmt, hab das get() hinten übersehen. Dann ist der Preis wohl kein Integer.
Auf jeden Fall gibt's da im Rgelfall eine geeignete Zugriffsmethode.
 
Die Fehlermeldung wäre interessant, daran könnte man sehen, was genau es für ein Typ ist 🙂

Ich würde zumindest nicht erwarten, dass man dort einen Integer bekommt, eher Double oder BigInteger/BigDecimal, was beides nicht zu int castbar ist.
 

Neue Themen


Zurück
Oben