2016-04-09 1 views
1

Android parse JSONObjectKann nicht JSON-Array-Objekte

Ich habe Fragen wie die gesuchten analysieren, aber Erfolg erhalten couldnot.

Ich habe JSON-Daten lke diese http://oep.esy.es/item_connect.php

{ 
    "items":[ 
     { 
     "id":"7", 
     "name":"bir", 
     "image":"6051-1.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"8", 
     "name":"d\u00f6rt", 
     "image":"1727-4.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"9", 
     "name":"iki", 
     "image":"2667-2.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"10", 
     "name":"\u00fc\u00e7", 
     "image":"9998-3.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"11", 
     "name":"be\u015f", 
     "image":"7005-5.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"12", 
     "name":"alt\u0131", 
     "image":"9377-6.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"turuncu" 
     }, 
     { 
     "id":"13", 
     "name":"elma", 
     "image":"1656-1001.png", 
     "number":"1", 
     "shape":"\u015eekilsiz", 
     "color":"k\u0131rm\u0131z\u0131" 
     } 
    ], 
    "success":1 
} 

Zunächst ist es Wort von Gegenständen und schließlich ist es Wort des Erfolgs. Es gibt keine Arrays mehr. Wenn ich sie lösche, kann ich Erfolg haben.

StringBuilder sb = new StringBuilder(); 

sb.append(json+"\n");//Log.d(TAG, "sb "+sb.toString()); 
} 

try {Log.d(TAG, "xx "); 
     JSONArray mJsonArray = new JSONArray(sb);Log.d(TAG, "xx x"); 
     JSONObject mJsonObject = new JSONObject(); 

Hier kann es nicht gehen xx x log, es geht in Fehler zu fangen.

aber wenn ich Header und Fußzeile Formular json löschen, funktioniert es. Sollte ich String-Operationen verwenden, um diese oder Regex zu löschen?

Edit:

i wie folgt gelöst:

try {Log.d(TAG, "xx "); 
     JSONArray(sb);Log.d(TAG, "xx x"); 
        JSONObject mJsonObject = new JSONObject();//i use this to get invidial value of json, do i need? 

        JSONObject jsono = new JSONObject(sb.toString()); 

        Log.d(TAG,"jsono "+jsono.toString()); 

        JSONArray items = jsono.getJSONArray("items"); 


        Log.d(TAG,"items "+items); 
        Log.d(TAG,"items length "+items.length()); 

          for (int i = 0; i < items.length(); i++) { 


          // Log.d(TAG, "xx " +mJsonObject.getString("image")); 
           Log.d(TAG, "string: "+items.getJSONObject(i).getString("image"));//i need image urls 
           } 

Dieser Code macht es Arbeit, aber manchmal geht es um Fehler von Try-Catch und ich kann nicht alle Fehler sehen. und manchmal dauert es sehr lange, etwa 1-2 Minuten und meistens nicht am Ende. Warum kann es sein?

Antwort

0

Die ganze Antwort ist ein JSONObject, so wie diese analysieren statt:

JSONObject jsono = new JSONObject(json); 

Die Sie Elemente und Erfolg aus ihm ziehen kann:

JSONArray items = jsono.getJSONArray("items"); 
int success = jsono.getInt("success"); 
+0

Dieser Code macht es Job, aber manchmal geht es um Fehler von versuchen zu fangen und ich sehe keine Fehler.und manchmal dauert es sehr lange, etwa 1-2 Minuten und meistens nicht am Ende. Warum kann es sein? –

0

Verwendung diesen Code

Gson mGson = new Gson(); mGson.fromJson(jsonResponse.getJSONObject(i).toString(),DataChartDetailsInquiry.class);

0

Versuchen Sie, diese Art und Weise Ihre json

public class Modelclass { 

    String id; 
    String name; 
    String image; 
    String number; 
    String shape; 
    String color; 


    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getImage() { 
     return image; 
    } 

    public void setImage(String image) { 
     this.image = image; 
    } 

    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

    public String getShape() { 
     return shape; 
    } 

    public void setShape(String shape) { 
     this.shape = shape; 
    } 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 
} 

JSON Parse-Code

 ArrayList<Modelclass> arrayList = new ArrayList<>(); 
     try { 
      JSONObject jsonObject = new JSONObject(jsonstring); 
      JSONArray jsonArray = jsonObject.getJSONArray("items"); 
      Modelclass modelclass; 
      for (int i = 0; i < jsonArray.length(); i++) { 
       JSONObject json_child_obje = jsonArray.getJSONObject(i); 
       modelclass = new Modelclass(); 
       modelclass.setId(json_child_obje.getString("id")); 
       modelclass.setId(json_child_obje.getString("name")); 
       modelclass.setId(json_child_obje.getString("image")); 
       modelclass.setId(json_child_obje.getString("number")); 
       modelclass.setId(json_child_obje.getString("shape")); 
       modelclass.setId(json_child_obje.getString("color")); 
       arrayList.add(modelclass); 
      } 
      Log.d("ArraylistSize", "" + arrayList.size()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
+0

warum es als JSON-Daten und wenn nötig, Daten von JSON zu halten? –

+0

Es gibt Serverantwort im Format von JSON. Sie können Daten nehmen, wenn Sie brauchen. –

+0

Entschuldigung, ich meinte, warum nicht als JSON –

0

Erste Arraylist für Lisr_items yout Daten

ArrayList<List_items> list_items_arr = new ArrayList<List_items>(); 

erstellen Klasse speichern erstellen zu analysieren

 public class List_items{ 
     String item_id,item_name; 
    public void setItem_id(String item_id) { 
      this.item_id = item_id; 
     } 

    public void setItem_name(String item_name) { 
     this.item_name = item_name; 
     } 
    } 

die Antwort vom Server erhalten und es

JSONObject jsono = new JSONObject(json); 

JSONArray items = jsono.getJSONArray("items"); 

    for(int i=0;i<items.length();i++){ 
     JSONObject list_obj=items.getJSONObject(i); 
      List_items list_items = new List_items(); 
      list_items.setItem_name(list_obj.getString("id")); 
      list_items.setItem_sku(list_obj.getString("name")); 
      list_items.setItem_id(list_obj.getString("image")); 
    list_items_arr .add(list_items); 
} 
+0

halten, warum es als JSON-Daten und wenn nötig, Daten von JSON zu halten? –

0

ersetzen Ihre JSONArray mJsonArray = new JSONArray(sb) Code

mit

JSONObject jsnobject = new JSONObject(sb); 

weil Ihre JSON-Daten Erste-Tag ist für Sie es JSONObject nicht JSONArray, versuchen Sie analysieren arbeiten

+0

Dieser Code macht es Job, aber manchmal geht es um Fehler zu versuchen fangen und ich kann keine Fehler sehen. und manchmal dauert es sehr lange, etwa 1-2 Minuten und meistens nicht am Ende. Warum kann es sein? –