2013-07-03 6 views
8

に変換することはできません。org.json.JSONArrayは、私は<code>JSON</code>に新しいですし、私はfollwoing例外を取得していますJSONObject

これを削除してください。ここに私のコードは次のとおりです。

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()); 
} 

これはおそらくJSONArrayとしてjsonを初期化する必要があり、私は私のPHPファイルから取得していますJSON

[ 
{ 
    "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" 
} 
] 
+3

はPLS JSONを投稿表します。 – Raghunandan

+2

完全なスタックトレースを投稿する – Triode

+0

jsonデータを投稿する –

答えて

22

この

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

JSONArray jsonarray = new JSONArray(strResponse); 

[であるべきであるJSON配列ノード

{を表す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"); 
} 
+0

清算してくれてありがとう、ほとんどの例は、配列を持つオブジェクトを持っていますが、それだけでは決して配列はありませんが、これは私のために物事をクリアしました – Manny265

+0

コンストラクタJSONObject(int)は未定義ですか? –

+0

これはJSONObjectです。jsonobject = jsonarray.getJSONObject(0); JSONObjectのインスタンスjsonobject =新しいJSONObject(i); –

5

です:

JSONObject json = new JSONObject(strResponse); 

はその後であるべき:

JSONArray json = new JSONArray(strResponse); 

しかし、それは、次の2回の操作では動作しません:あなただけのため.names()に向けての依存を取り除く(代わりにjsonからJSONObjectを得るためにあなたのループを変更する場合は大丈夫だろう

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

を:

JSONObject e = json.getJSONObject(i); 

編集:フルコード

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()); 
} 
+0

ありがとうございます。 – DPK27

+0

問題はありません@ user2545272!それがあなたの問題を解決した場合、これを答えとしてマークすることを忘れないでください。 :-) – ninetwozero

0

号:ここ

JSONObject json = new JSONObject(strResponse); 

strResponseが原因JSONObjectに変換しながら、あなたは、この例外を取得しているにJSONArrayの形式であってもよいです。と

JSONObject json = new JSONObject(strResponse); 

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

+0

strResponseは文字列です – DPK27

0

これを試してみてください、あなたの最初のブロックは、それは本当にあなたが全体にこれを置き換える必要が受けているJSONであればその最初の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どのようにURL配列からstrResponseの値を取得しますか... – Amitsharma

0

を取得したJSON配列です

JSONArray internships = json.toJSONArray(strResponse); 
+0

@lvoこんにちは私は同じ問題を抱えています。 strResponseの値を取得する......... – Amitsharma