web-dev-qa-db-fra.com

org.json.JSONArray ne peut pas être converti en JSONObject

Je suis nouveau à JSON et j'obtiens l'exception suivante:

org.json.JSONArray cannot be converted to JSONObject dans la première ligne de la section try elle-même.

S'il vous plaît aidez-moi à supprimer cela. Voici mon 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());
}

c'est le json que je reçois de mon fichier php

[
 {
    "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

Ce 

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

devrait être

JSONArray jsonarray = new JSONArray(strResponse);

[ représente le noeud du tableau json

{ représente le noeud d'objet JSON

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

Vous devriez probablement initialiser json en tant que JSONArray:

JSONObject json = new JSONObject(strResponse);

Devrait alors être:

JSONArray json = new JSONArray(strResponse);

Cependant, cela ne fonctionnerait pas avec les deux opérations suivantes:

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

Ce serait bien si vous modifiiez simplement votre boucle pour obtenir le JSONObject à partir de json à la place (supprimant ainsi la dépendance vers .names():

JSONObject e = json.getJSONObject(i);

Edit: code complet

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

essayez celui-ci, votre premier bloc est le tableau json alors obtenez le premier tableau json

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

si c’est vraiment le JSON que vous recevez, vous devriez remplacer l’ensemble

JSONObject json = new JSONObject(strResponse);

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

avec

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

Problème:

 JSONObject json = new JSONObject(strResponse);

ici, strResponse peut être au format JSONArray en raison duquel vous obtenez cette exception lors de sa conversion en JSONObject.

0
Mehul Joisar