JAVA simple.JSONObject cannot be cast to simple.JSONArray

Hi,

ich hatte das Problem bereits im html.de Forum angesprochen, leider bekam ich da bis jetzt keine Antwort. Ich hoffe das ist jetzt nicht weiter problematisch wenn ich das in einem Forum, welches sich auf Java spezialisiert, nochmal frage.

Also es geht darum das ich eine kleine APP schreiben möchte. Diese APP läd von meiner Web-API den JSON Code und soll diesen zu einer ArrayList machen. Ziel ist es, dass ich alle Produkte in einer Liste habe (Produktname + dedizierte Server IP).

Leider bekomme ich folgenden Fehler: java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray

Ich habe bereits das Internet nach Tutorials durchsucht ob ich vielleicht etwas falsch gemacht habe aber im Internet sind die gleichen Lösungsansätze genommen wurden wie ich sie auch schon habe.

Ich hoffe hier kann mir jemand helfen.

Vielen Dank im vorraus!

JAVA Code
Java:
    public ArrayList HandelJsonResponse (String result) {

        try {

            ArrayList list = new ArrayList();

            JSONParser jsonParser = new JSONParser();
            Object obj = jsonParser.parse(result);

            JSONObject jsonObject = (JSONObject) obj;

            JSONArray slideContent = (JSONArray) jsonObject.get("products");
            Iterator i = slideContent.iterator();

            while (i.hasNext()) {
                JSONObject slide = (JSONObject) i.next();
                list.add((String)slide.get("name") +  " - " + (String)slide.get("dedicatedip"));
            }


            return list;
        } catch (ClassCastException e) {
            e.printStackTrace();
            return null;
        } catch (ParseException ex) {
            ex.printStackTrace();
            return null;
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            return null;
        }
    }

JSON Code:
Code:
{
    "@attributes": {
        "version": "6.0.2"
    },
    "action": "getclientsproducts",
    "result": "success",
    "clientid": "36",
    "serviceid": {},
    "pid": {},
    "domain": {},
    "totalresults": "10",
    "startnumber": "0",
    "numreturned": "10",
    "products": {
        "product": [
            {
                "id": "415",
                "clientid": "36",
                "orderid": "463",
                "pid": "54",
                "regdate": "2015-05-28",
                "name": "Testserver",
                "groupname": "Testserver",
                "domain": {},
                "dedicatedip": {},
                "serverid": "6",
                "servername": "Server Yellow",
                "serverip": {},
                "serverhostname": "656.564.564.54",
                "firstpaymentamount": "0.00",
                "recurringamount": "0.00",
                "paymentmethod": "banktransfer",
                "paymentmethodname": "Überweisung",
                "billingcycle": "Free Account",
                "nextduedate": "0000-00-00",
                "status": "Terminated",
                "username": "Demo",
                "password": "asdasda",
                "subscriptionid": {},
                "promoid": "0",
                "overideautosuspend": "0",
                "overidesuspenduntil": "0000-00-00",
                "ns1": {},
                "ns2": {},
                "assignedips": {},
                "notes": {},
                "diskusage": "0",
                "disklimit": "0",
                "bwusage": "0",
                "bwlimit": "0",
                "lastupdate": "0000-00-00 00:00:00",
                "customfields": {
                    "customfield": [
                        {
                            "id": "92",
                            "name": "Standort",
                            "value": "Deutschland - Frankfurt am Main"
                        },
                        {
                            "id": "93",
                            "name": "Arbeitsspeicher",
                            "value": "1 GB"
                        },
                        {
                            "id": "99",
                            "name": "smskey",
                            "value": "reteterr4"
                        }
                    ]
                },
                "configoptions": {
                    "0": "\n"
                }
            },
            {
                "id": "416",
                "clientid": "36",
                "orderid": "464",
                "pid": "53",
                "regdate": "2015-05-28",
                "name": "Testserver M",
                "groupname": "Testserver",
                "domain": "test.de",
                "dedicatedip": "123.456.789.54",
                "serverid": "0",
                "servername": {},
                "serverip": {},
                "serverhostname": {},
                "firstpaymentamount": "0.00",
                "recurringamount": "0.00",
                "paymentmethod": "banktransfer",
                "paymentmethodname": "Überweisung | Bank Transfer",
                "billingcycle": "Free Account",
                "nextduedate": "0000-00-00",
                "status": "Cancelled",
                "username": "ggf-36",
                "password": "sdfsdfasdf",
                "subscriptionid": {},
                "promoid": "0",
                "overideautosuspend": "0",
                "overidesuspenduntil": "0000-00-00",
                "ns1": "test.de",
                "ns2": "test.de",
                "assignedips": {},
                "notes": {},
                "diskusage": "0",
                "disklimit": "0",
                "bwusage": "0",
                "bwlimit": "0",
                "lastupdate": "0000-00-00 00:00:00",
                "customfields": {
                    "customfield": [
                        {
                            "id": "87",
                            "name": "vserverid",
                            "value": "56544"
                        },
                        {
                            "id": "88",
                            "name": "rootpassword",
                            "value": "hhdfghfghdfgh"
                        },
                        {
                            "id": "89",
                            "name": "nodeid",
                            "value": "20"
                        },
                        {
                            "id": "90",
                            "name": "consoleusername",
                            "value": "console-JhjRjN"
                        },
                        {
                            "id": "91",
                            "name": "consolepassword",
                            "value": "sdfsdfasdf"
                        },
                        {
                            "id": "100",
                            "name": "smskey",
                            "value": "8b50cb99a2"
                        }
                    ]
                },
                "configoptions": {
                    "0": "\n"
                }
            }
        ]
    }
}
 

fhoffmann

Top Contributor
Hallo,

dein JSON-Code sieht komisch aus. products soll doch wohl ein Array von product sein.
Code:
"products": [
   "product": {...},
   "product": {...}
]
 

truesoul

Top Contributor
Hallo,

products ist auch ein JSONObject.
product ist das JSONArray.

Code:
JSONObject products= (JSONObject) jsonObject.get("products");

JSONArray list = (JSONArray) products.get("product");

P.S ich sehe auch nur einmal product.
 
Zuletzt bearbeitet:
Hey,

vielen Dank! Das ganze hat mich schon ein Stück weitergebracht. :)

Nun habe ich das ganze mal getestet und bekomme folgenden Fehler: java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to java.lang.String

Der Fehler entsteht hier:
Java:
list.add(slide.get("name").toString() +  " - " + slide.get("dedicatedip").toString());

Ich habe es sowohl mit (String)slide.get("name"); probiert als auch mit toString() - bei beiden kommt der Fehler.

Im JSONObject slide (Welches in der while-schleife gesetzt wird) sind alle Daten vorhanden. Wo ist also nun das Problem, das Element zu einen String zu casten?
 

truesoul

Top Contributor
Hallo,

mache doch einfach mal getClass() und nicht toString().

Dann siehst du welches Object es ist.
dedicatedip ist ein JSONObject.

Ein Tipp von mir. Schau dir mal an wie ein JSON aufgebaut ist. Google hilft dir dabei sicherlich auch ein wenig.

Die Zeile sollte aber funktionieren. Ich sehe da kein Problem.

Gruß
 

thecain

Top Contributor
Die Zeile kann keine ClassCastException geben. Da ist ja gar kein ClassCast involviert. (Im toString())

Sonst ist der Debugger dein Freund. ein JSONObject ist ja nur ein Wrapper für eine Hashmap, also sollte das Handling da ja nicht sonderlich schwer sein.
 
Hi,

soweit alles fertig und funktioniert nun auch. Vielen Dank für eure Hilfe!

Nun habe ich die ArrayList und möchte diese in ein ListView eintragen. Dafür habe ich mir eine einfache UpdateTable Funktion gebaut:

Code:
    public void UpdateTable (ArrayList list) {

        ListAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        this.listview.setAdapter(adapter);
    }

Wenn ich die ArrayList an diese Tabelle übergebe sollte eigentlich die Liste mit den Daten gefüllt werden. Ich erhalte aber nur eine weiße Seite!

Wenn ich in die onCreate Funktion vorher ein Array mit meiner UpdateTable Funktoion lade funktioniert das.

Code:
    String[] example = new String[] { "Test", "Test2", "Test3", "Test4"};

    ArrayList<String> list = new ArrayList<String>();
    for (int i = 0; i < example.length; ++i) {
      list.add(example[i]);
    }

UpdateTable(list);

Sobald ich aber die Daten aus meiner API verwenden möchte hängt Sie sich APP auf, glaube ich. Abstürzen tut sie nicht aber es ist einfach eine weiße Seite da. Wenn vorher Daten in der ListView waren kann ich diese Elemente ab dann nicht mehr anklicken.
Ich habe auch gedebuggt. Es kommt kein aber garkein Fehler! Das Array welches aus dem JSON teil besteht ist auch gefüllt und eigentlich sollte es funktionieren. ^__^

list -> [0] = "Server 1", [1] = "Server 2" usw.

Habt Ihr da nochmal eine Idee?

Code:
public class products extends AppCompatActivity {
    private ListView listview;
    private ProgressDialog progressDialog;
    private String androidid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_products);

        this.androidid = new Config().devideid(this.getContentResolver());
        this.listview = (ListView) findViewById(R.id.listView);

        new Waiter().execute();

    }

    public void UpdateTable (ArrayList list) {

        ListAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        this.listview.setAdapter(adapter);
    }

    private class Waiter extends AsyncTask {
        //Before running code in separate thread
        @Override
        protected void onPreExecute()
        {
            progressDialog = ProgressDialog.show(products.this, "Laden...","Bitte warten Sie, wärend Ihre Daten geladen werden.", false, false);

        }

        protected void onPostExecute(Void result)
        {
            //close the progress dialog
            if(progressDialog.isShowing())progressDialog.dismiss();
            setContentView(R.layout.activity_main);
        }

        @Override
        protected ArrayList doInBackground(Object... arg0) {
            Products products = new Products();

            ArrayList<String> plist = products.getProducts(androidid);

            try {
                UpdateTable(plist);
                progressDialog.dismiss();
                return plist;
            } catch (Exception e) {

                e.fillInStackTrace();
                e.getMessage();

            } catch(Throwable e) {
                e.getMessage();
            }
            progressDialog.dismiss();
            return null;
        }

    }
 

truesoul

Top Contributor
Hallo,

also erstmal würde ich UpdateTable nicht in doInBackground packen sondern in
onPostExecute und du verwendest AsyncTask nicht so wie es gedacht ist.

Java:
class MyTask extends AsyncTask<String, Void, Long> {
  
    // Deine Konstruktoren ...
  
    protected Long doInBackground(String... args) {
        List<String> list ...
        return list;
    }

    protected void onPostExecute(List<String> result) {
        // mach was mit dem Ergebnis
    }
}

new MyTask().execute("json");

Und warum machst du setContentView(R.layout.activity_main); ?
Du hast doch schon setContentView(R.layout.activity_products); gesetzt?

Grüße
 
Hi,

ich hatte onPostExecute nicht weiter benutzt, da es bei mir nicht aufgerufen wurde.
Hab den Code jetzt nochmal entsprechend überarbeitet aber das Problem ist halt das onPostExecute nicht ausgeführt wird.

Java:
    private class LoaderTask extends AsyncTask<String, Void, ArrayList> {

        @Override
        protected ArrayList doInBackground(String... args) {
            Products products = new Products();

            ArrayList<String> plist = products.getProducts(androidid);

            return plist;
        }

        @Override
        protected void onPreExecute()
        {
            progressDialog = ProgressDialog.show(products.this, "Laden...","Bitte warten Sie, wärend Ihre Daten geladen werden.", false, false);

        }

        protected void onPostExecute(ArrayList<String> result)
        {

            UpdateTable(result);
            if(progressDialog.isShowing())progressDialog.dismiss();

        }



    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
T Tags in XML Datei mit Java erstellen XML & JSON 3
E JAXB und java.nio.file.Path XML & JSON 4
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
S Java REST Client + Json XML & JSON 8
L Lässt sich folgendes so oder so ähnlich mit Java und XML umsetzen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
J JSON zu Java mit der GSON Google API XML & JSON 0
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
P Einheiten in Java XML & JSON 4
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
A WSDL und Java XML & JSON 5
A XMLRPC für Java XML & JSON 3
S XML auf Java Klassen Mappen XML & JSON 10
N Java XML schreiben funktioniert nicht XML & JSON 1
B aus xsd Java Klassen generieren XML & JSON 3
MiMa Mehrfachvariablen in Java durch XML XML & JSON 4
Q XML-File als Objekt in Java XML & JSON 6
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
S Wie aktualisiert man den Java-Kode mit FOP1.0? XML & JSON 1
L XSL: Aufruf Java-class XML & JSON 11
N Java Code aus XML Datei generieren XML & JSON 8
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
A Unterschiedliche Datenstruktur XML <-> Java mappen XML & JSON 9
R XSD aus Java Klassen erzeugen?? XML & JSON 2
N xsd pattern in java einlesen XML & JSON 6
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
F SOAP in Java XML & JSON 6
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
F Einlesen von JDBC connection in Java von XML XML & JSON 4
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
M Probleme mit XPath bei Java XML & JSON 5
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
V JAXB schema 2 java XML & JSON 3
S XJC --> Java-Objects compile Problem XML & JSON 4
G Mit JSON Java und C# verbinden XML & JSON 4
K XML Datei in ein Java package „einbinden" XML & JSON 3
H Java - XML - Rekursion - Verwirrung XML & JSON 6
F XML Datei in Java einlesen XML & JSON 4
J XSD > XML > Java XML & JSON 7
F XML mit Java XML & JSON 2
algorismi SVG Datein mit Batik in Java reinladen XML & JSON 3
S Java - Klassen erzeugen aus xsd bzw. wsdl XML & JSON 3
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
T StAX / SAX => Wie XML Datenstruktur in Java abbilden? XML & JSON 2
H XML plattformunabhängig/Open Source für Java XML & JSON 4
C Java-Imports bei Jaxb XML & JSON 8
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
Fadi .classpath(XML) mit Java lesen XML & JSON 2
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
M Problem mit FOP in Java Programm XML & JSON 2
H Fop / Java /Fonts XML & JSON 6
H XSL Aufruf via Java mit neuen Fonts XML & JSON 9
T Java Klasse für gegebenes XML erstellen XML & JSON 4
M Xlink in Java-Objekt umwandeln XML & JSON 9
S Jdom+java webstart XML & JSON 4
P Einstieg in XML mit Java XML & JSON 3
G MS-Word Dokument mit Java erstellen XML & JSON 2
N AXIOM mit Java 1.4 XML & JSON 4
J DTD in Java integrieren? XML & JSON 3
L XML Datei in Java angeben Pfad? XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
G XML mit JAVA an URL senden (http post) XML & JSON 12
D Java DOM Ausgabe ohne XML header XML & JSON 4
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
S Java 6 und Xerces-j-2-9 XML & JSON 3
E XML mit java einlesn XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
G JAVA und DOM XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
P DTD -> Java XML & JSON 4
K xml --> sax --> java objekthierarchie XML & JSON 2
B DTD aus Java erzeugen XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
K java + xpath -> performanceproblem XML & JSON 9
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
A Kann XML weitere XMLs inkludieren? Oder kann es Java? XML & JSON 5
vogella *Erledigt* XML und Java DOM Tutorial XML & JSON 3
T SOAP mit Java ohne HTTP Server möglich? XML & JSON 3
C HTML-Befehle per Java entfernen XML & JSON 7
W Java und XML - help request XML & JSON 3
M [SOLVED]Ausgabe mit Java XML & JSON 2
P Unterschiede java 1.4 und 1.3 XML & JSON 3
M generate SVG with java XML & JSON 2
G java+xml mit dom4j XML & JSON 4
P XSLT in Java verwenden XML & JSON 7
M Auswertung arithmetischer Ausdrücke mit SAX und Java XML & JSON 7
S XMl Dateien in Java schreiben XML & JSON 4
B XML-Document mit Java erzeugen und zuruecksenden XML & JSON 1
J Beispiel aus Java Magazin 03/2004 gesucht ! XML & JSON 6
R java.net.MalformedURLException: no protocol . XML & JSON 12

Ähnliche Java Themen

Neue Themen


Oben