2014-10-06 3 views
1

Вот как я собирался это сделать, но я получаю сообщение об ошибке в строке JSONObject c = orders.getJSONObject(i);:JSONObject разборе

Error:(95, 57) error: incompatible types: int cannot be converted to String

Может быть, есть лучший способ сделать этот процесс, пожалуйста, помогите

@Override 
protected String doInBackground(String... params) { 
    try { 
     List<NameValuePair> param = new ArrayList<NameValuePair>(); 
     JSONObject json = jsonParser.makeHttpRequest(URL_ORDERS, "GET", 
       param, token); 
     JSONObject data = json.getJSONObject("data"); 
     JSONObject orders = data.getJSONObject("orders"); 

     Log.d("JSON DATA", data.toString()); 
     Log.d("JSON ORDERS", orders.toString()); 

     for (int i = 0; i < orders.length(); i++) { 
      JSONObject c = orders.getJSONObject(i); 
      imageurl = c.getString(TAG_IMAGE); 
      Log.d("IDK", imageurl); 
      title = c.getString(TAG_TITLE).substring(0, 20); 
      price = c.getString(TAG_PRICE); 
      status = c.getString(TAG_PSTATUS); 
      symbol = c.getString(TAG_PRICESYMBOL); 

      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put(TAG_TITLE, title); 
      map.put(TAG_PRICE, price); 
      map.put(TAG_PSTATUS, status); 
      map.put(TAG_PRICESYMBOL, symbol); 
      map.put(TAG_IMAGE, imageurl); 
      orderList.add(map); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

Вот мой JSONResponse http://paste.ofcode.org/umwZRdi7B9Ve7kVjSRNTk8

+0

Я думаю, что заказы должны быть 'JSONArray' – zozelfelfo

+0

AFAIK Ваш json плохо отформатирован. Но если нет, и вы хотите итерации заказов, то вы должны рассматривать его как JSONArray, а не объект –

+0

парень с частью api сделал это так, нет ли другого решения? – Alex

ответ

1

Ваш orders объект является JSONObject (с идентификаторами заказов которые используются как ключи, а также объекты полного порядка как значения), но в коде вы обрабатываете его как JSONArray.

Вы, вероятно, хотите, чтобы изменить цикл следующим образом:

Iterator<String> orderIterator = orders.keys(); 

while (orderIterator.hasNext()) { 
    JSONObject c = orders.getJSONObject(orderIterator.next()); 
    // ... 
} 

Вызов keys() возвратит iterator над клавишами объекта (в данном случае для того, идентификаторы). Тогда просто нужно использовать итератор, чтобы перебрать все ключи и получить каждый объект заказа, используя getJSONObject.

+1

сэр, спасибо вам большое, я боролся с этим в течение недели – Alex

+0

, можете ли вы предоставить мне документацию на этот вид операций, пожалуйста, – Alex

+0

Я только что получил его из документации для Android: http://developer.android.com/reference /org/json/JSONObject.html Я обновлю свой ответ на соответствующие ссылки. –

Смежные вопросы