it-swarm.com.de

org.json.JSONArray kann nicht in JSONObject konvertiert werden

Ich bin neu bei JSON und erhalte folgende Ausnahme:

org.json.JSONArray cannot be converted to JSONObject in der ersten Zeile des try-Abschnitts selbst.

Bitte helfen Sie mir, das zu entfernen. Hier ist mein Code:

try {   
    JSONObject json = new JSONObject(strResponse);

    //Get the element that holds the internship ( JSONArray )
    JSONArray name = json.names();
    JSONArray  internships = json.toJSONArray(name);

    //Loop the Array
    for(int i=0;i < internships.length();i++) {     
        Log.e("Message","loop");
        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject e = internships.getJSONObject(i);
        map.put("id",  String.valueOf("id"));
        map.put("title", "Title :" + e.getString("title"));
        map.put("company", "Company : " +  e.getString("company"));
        map.put("category", "Category : " +  e.getString("category"));
        mylist.add(map);
    } 
} catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
}

dies ist der Json, den ich von meiner PHP-Datei bekomme

[
 {
    "id": "31",
    "title": "Business Development - Executive",
    "company": "Indidelights",
    "category": "Sales and Business Development"
 },
 {
    "id": "40",
    "title": "Business Development - Ecommerce MH",
    "company": "Ram Gopal & Co",
    "category": "Sales and Business Development"
 },
 {
    "id": "41",
    "title": "Sales and Business development intern",
    "company": "Esanchalak",
    "category": "Sales and Business Development"
 },
 {
    "id": "42",
    "title": "Purchase Executive",
    "company": "Winni.in",
    "category": "Marketing"
 },
 {
    "id": "43",
    "title": "Marketing Intern",
    "company": "Walkover Web Solutions Pvt. Ltd.",
    "category": "Marketing"
 },
 {
    "id": "44",
    "title": "Marketing Intern",
    "company": "SkillKindle Learning Pvt Ltd",
    "category": "Marketing"
 },
 {
    "id": "45",
    "title": "Graphic Designer",
    "company": "Stylopa",
    "category": "Graphic Design / Art Work"
 },
 {
    "id": "46",
    "title": "Graphic Designer",
    "company": "LycondonFX",
    "category": "Graphic Design / Art Work"
 },
 {
    "id": "47",
    "title": "Web Designer",
    "company": "Xapify LLC",
    "category": "Software"
 },
 {
    "id": "48",
    "title": "Web Designer (Frontend)",
    "company": "gotrademark.in",
    "category": "Web Design and Development"
 },
 {
    "id": "49",
    "title": "Content Writing Intern",
    "company": "National Entrepreneurship Network",
    "category": "Content Writing / Journalism"
 },
 {
    "id": "50",
    "title": "Content Writing Intern",
    "company": "Pragmatum Training Pvt Ltd",
    "category": "Content Writing / Journalism"
 },
 {
    "id": "51",
    "title": "HR Intern",
    "company": "GATI Kintetsu Express Pvt Ltd",
    "category": "HR / Recruitment"
 },
 {
    "id": "52",
    "title": "Pharma Intern",
    "company": "Qlinics Health Care Pvt Ltd",
    "category": "BioTechnology / Pharma"
 },
 {
    "id": "53",
    "title": "Android Developer",
    "company": "InoXapps Mobile Solutions Pvt Ltd",
    "category": "Mobile App Development"
 },
 {
    "id": "54",
    "title": "Mobile App developer",
    "company": "RV Media Inc",
    "category": "Mobile App Development"
 },
 {
    "id": "55",
    "title": "Electronics Intern",
    "company": "GA SOFTWARE TECHNOLOGIES PVT LTD",
    "category": "Electronics Engineering"
 }
 ]
11
DPK27

Diese 

JSONObject json = new JSONObject(strResponse);
// your strResponse is a json array 

sollte sein

JSONArray jsonarray = new JSONArray(strResponse);

[ steht für den json-Array-Knoten

{ steht für den json-Objektknoten

for(int i=0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String id       = jsonobject.getString("id");
    String title    = jsonobject.getString("title");
    String company  = jsonobject.getString("company");
    String category = jsonobject.getString("category");
}
32
Raghunandan

Sie sollten json wahrscheinlich als JSONArray initialisieren:

JSONObject json = new JSONObject(strResponse);

Sollte dann sein:

JSONArray json = new JSONArray(strResponse);

Das würde jedoch nicht mit den folgenden zwei Operationen funktionieren:

JSONArray name = json.names(); //.names() doesn't exist in JSONArray
JSONArray  internships = json.toJSONArray(name); // Is instead to be seen as

Das wäre in Ordnung, wenn Sie einfach Ihre Schleife ändern, um stattdessen die Variable JSONObject von json zu erhalten (und somit die Abhängigkeit von .names() entfernen):

JSONObject e = json.getJSONObject(i);

Edit: Vollständiger Code

try {   
    JSONArray internships = new JSONArray(strResponse);

    //Loop the Array
    for(int i=0;i < internships.length();i++) {     
        Log.e("Message","loop");
        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject e = internships.getJSONObject(i);
        map.put("id",  String.valueOf("id"));
        map.put("title", "Title :" + e.getString("title"));
        map.put("company", "Company : " +  e.getString("company"));
        map.put("category", "Category : " +  e.getString("category"));
        mylist.add(map);
    } 
} catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
}
6
ninetwozero

probieren Sie dieses aus. Ihr erster Block ist ein Json-Array, also holen Sie sich das erste Json-Array

JSONArray jsonarray = new JSONArray(strResponse);

    for(int i=0;i < jsonarray .length();i++) {
    JSONObject jsonobj = new JSONObject(i);
            map.put("id",   jsonobj .getString("id"));
            map.put("title",  jsonobj .getString("title"));
            map.put("company",  jsonobj .getString("company"));
            map.put("category",  jsonobj .getString("category"));
            mylist.add(map);

         }
0
Sunil Kumar

wenn dies wirklich der Json ist, den Sie empfangen, sollten Sie den gesamten Code ersetzen:

JSONObject json = new JSONObject(strResponse);

//Get the element that holds the internship ( JSONArray )
JSONArray name = json.names();
JSONArray  internships = json.toJSONArray(name);

mit

JSONArray  internships = json.toJSONArray(strResponse);
0
Ivo Beckers

Problem:

 JSONObject json = new JSONObject(strResponse);

hier kann strResponse das Format JSONArray haben, aufgrund dessen Sie diese Ausnahme erhalten, während Sie sie in JSONObject konvertieren.

0
Mehul Joisar