2012-05-07 3 views
0

мой JSON Ответ от сервера изменяется как пользовательский ввод, предположим, что на сервере, когда пользователь добавил один элемент, тогда я получил ответ как JSONObject, но когда элементы больше 1, тогда ответ находится в форме JSONArray ,Реакция JSON изменяется как ничто не изменяется

Теперь, как обрабатывать эти ответы, чтобы мое приложение не было убито, нужно использовать контрольную точку?

в случае двух п ..

"items":{ 
    "item":[ 
      { 
      "item_id":"49623", 
      "type":"Products", 
      "name":"desktop app", 
      "description":"", 
      "unit_cost":"162.45", 
      "quantity":"1.00", 
      "discount":"0.00", 
      "discount_type":"Percent", 
      "tax1_percent":"0.00", 
      "tax2_percent":"0.00" 

     }, 
     { 
      "item_id":"52851", 
      "type":"Products", 
      "name":"", 
      "description":"", 
      "unit_cost":"5,290.50", 
      "quantity":"1.00", 
      "discount":"0.00", 
      "discount_type":"Percent", 
      "tax1_name":{ 

      }, 
      "tax1_percent":"0.00", 
      "tax1_type":{ 

      }, 
      "tax2_name":{ 

      }, 
      "tax2_percent":"0.00", 
      "tax2_type":{ 

      } 
     } 

] }

В случае одного элемента

"items":{ 
    "item":{ 
       "item_id":"49623", 
       "type":"Products", 
       "name":"desktop app", 
     "description":"this is the software for your desktop system sequerty", 
     "unit_cost":"162.45", 
     "quantity":"1.00", 
     "discount":"0.00", 
     "discount_type":"Percent", 
     "tax1_name":{ 

     }, 
     "tax1_percent":"0.00", 
     "tax1_type":{ 

     }, 
     "tax2_name":{ 

     }, 
     "tax2_percent":"0.00", 
     "tax2_type":{ 

     } 
    } 

}}

+0

Что такое текущее поведение вашего приложения для этих двух сценариев .. – Ronnie

ответ

0

Я думаю, что вы могли бы использовать optJSONArray ("") или optJSONObject (""), который не выдает никаких исключений eption, но возвращает null, если объект не находится в правильном типе.

JSONObject items = myJSON.getJSONObject("items"); 
Object item; 
if (items.optJSONArray("item") != null){ 
//The result isn't null so it is a JSONArray 
item = items.optJSONArray("item"); 
} 
else 
{ 
//The result is null so it isn't a JSONArray 
item = items.optJSONObject("item"); 
} 

Тогда вы просто должны использовать свой объект, как вы хотите, используя «InstanceOf»:

if (item instanceof JSONObject){ 
// The object is a JSONObject 
[... Your code ...] 
} 
else 
{ 
// The object is a JSONArray 
[... Your code ...] 
} 
Смежные вопросы