2014-03-13 55 views
1

我有一個解析Android中的JSON對象的堆棧。如何在android中解析JSON(Two Dimessional)數組對象?

這裏我JSON數據,

{ 
    STATUS: "200" 
    ERROR: "false" 
    SECRETKEY: "deb1d0b9a70a0ed682d2975b2a583c28" 
    DATA: { 
     stock: 2 
     pins: [1] 
     0: { 
      id: "1" 
      pin: "8172310874" 
      serial: "0000000000100000" 
      card_type: "10000" 
      company: "FWIFI" 
      expiry_date: "2016-01-01" 
      invoice_id: "INVHQ/000001" 
      order_id: "1" 
      delivered: "0" 
      } 

     } 
} 

這裏我解析JSON對象

try { 
    JSONObject json = new JSONObject(value); 
    String secretKey = json.get("SECRETKEY").toString(); 
    JSONObject data_obj = new JSONObject("DATA"); //problem is here. It's go to catch block 
    JSONArray j_array = data_obj.getJSONArray("pins"); 
    Integer qty = j_array.length(); 
     for(int i = 0 ; i < j_array.length() ; i++){ 
       //here loop 
     } 
    }catch (JSONException e) { 
     e.printStackTrace(); 
    } 

請指點我,我環路怎麼可以?我改變這一點。但是,錯誤就是這樣說的。

java.lang.String類型的值數據不能被轉換爲JSONObject的

+0

'{'是'jsonObject',而不是'jsonArray' –

回答

2

數據不是jsonarray它是一個JSONObject { - >代表的JSONObject和[ - >表示jsonArray.so變化JSONObject pin_Arr = json.getJSONObject("DATA");

+0

謝謝,先生,我已經用你的代碼片斷了! –

2

你應該得到的是DATAJSONObject,然後讓你的0又作爲一個JSONObject。

2

試試這個

try { 
    JSONObject json = new JSONObject(value); 
    String secretKey = json.get("SECRETKEY").toString(); 
    JSONArray pin_Arr = json.getJSONArray("DATA"); //problem is here. It's go to catch blcok 
    Integer qty = pin_Arr.length(); 
     for(int i = 0 ; i < pin_Arr.length() ; i++){ 
       JSONObject actor = pin_Arr.getJSONObject(i); 
       String name = actor.getString("your data"); 
       // you can add your datahere 
     } 
    }catch (JSONException e) { 
     e.printStackTrace(); 
    } 
+0

DATA是'JsonObect',你的代碼與OP的代碼沒有區別。它是完全錯誤的 –

+0

該JSON也是不正確的... – Simmant

+0

我認爲,這個JSONArray pin_Arr = json.getJSONArray(「DATA」);必須像那樣JSONObject j_obj = json.JSONobject(「DATA」); –

1

,這不是一個有效的JSON)

的鍵值後,您需要一個逗號和按鍵都必須到宣佈進入「...」

您可以檢查您的JSON是否在JSONLint,一個在線驗證器上有效。

基本上就應該是這樣的:

{ 
    "STATUS": 200, 
    "ERROR": "false", 
    "SECRETKEY": "deb1d0b9a70a0ed682d2975b2a583c28", 
    "DATA": { 
     "0": { 
      "id": "1", 
      "pin": "8172310874", 
      "serial": "0000000000100000", 
      "card_type": "10000", 
      "company": "FWIFI", 
      "expiry_date": "2016-01-01", 
      "invoice_id": "INVHQ/000001", 
      "order_id": "1", 
      "delivered": "0" 
     }, 
     "stock": 2, 
     "pins": [ 
      1 
     ] 
    } 
} 

只要你有類似的東西,你可以用GSON,傑克遜或由Android爲了提供標準的JSONObject訪問您的JSON領域,對象和數組作爲通過您在JSON中獲得的鍵(「狀態」,「錯誤」,...)的映射。

+0

感謝兄弟。我會查一下。 –