2017-04-25 19 views
-2

我有這樣的JSON:循環通過與非數字鍵JSON動態

{"produtos": { 
    "Su\u00edte Master": { 
     "variacao": { 
      "variationcustom1bla": { 
       "descricao": "2\u00aa a 6\u00aa - 1h", 
       "preco": "60.00", 
       "percentual": "0.00" 
      }, 
      "variationcusstom1bla": { 
       "descricao": "2\u00aa a 6\u00aa - 2h", 
       "preco": "70.00", 
       "percentual": "0.00" 
      }, 

     } 
    }, 
    "Suitetematica": { 
     "variacao": { 
      "variation bla2 custom bla2": { 
       "descricao": "3\u00aa at\u00e9 5\u00aa as 18h - 2h", 
       "preco": "99.00", 
       "percentual": "20.00" 
      }, 
      "Pernoites": { 
       "descricao": "Pernoites", 
       "preco": "149.00", 
       "percentual": "5.00" 
      } 
     } 
    } 
} 
} 
try { 
    JSONObject produtos = new JSONObject(json); 
    JSONArray produtosArr = produtos.getJSONArray("produtos"); 
} catch (JSONException e) { 
    // JSON error 
    e.printStackTrace(); 
} 

我如何去使用過的JSONObject()這個JSON?它返回此錯誤:

在產品類型org.json.JSONObject無法轉換爲JSONArray ;

+0

告訴我們你是怎麼得到的 –

+0

我編輯了我的答案,看起來很和藹。 @MartinDeSimone –

回答

-1

您必須使用JSONObject來解析Json,因爲這個json沒有數組元素。因此,如果您試圖使用JSONArray解析此json,則顯示錯誤消息org.json.JSONObject無法轉換爲JSONArray

您可以查看代碼:

String jsonString = "{\"produtos\":{\"Suíte Master\":{\"variacao\":{\"variationcustom1bla\":{\"descricao\":\"2ª a 6ª - 1h\",\"preco\":\"60.00\",\"percentual\":\"0.00\"},\"variationcusstom1bla\":{\"descricao\":\"2ª a 6ª - 2h\",\"preco\":\"70.00\",\"percentual\":\"0.00\"},\"variationssscustom1bla\":{\"descricao\":\"2ª a 6ª - 3h\",\"preco\":\"80.00\",\"percentual\":\"0.00\"},\"variatissssoncustom1bla\":{\"descricao\":\"Pernoite: de 21h até as 14h\",\"preco\":\"130.00\",\"percentual\":\"0.00\"}}},\"Suitetematica\":{\"variacao\":{\"variation bla2 custom bla2\":{\"descricao\":\"3ª até 5ª as 18h - 2h\",\"preco\":\"99.00\",\"percentual\":\"20.00\"},\"Pernoites\":{\"descricao\":\"Pernoites\",\"preco\":\"149.00\",\"percentual\":\"5.00\"}}}}}"; 
    try { 
     JSONObject rootJObj = new JSONObject(jsonString) ; 

     JSONObject jProdutos = rootJObj.getJSONObject("produtos") ; 
     JSONObject suOBj1 = jProdutos.getJSONObject("Suíte Master"); 

     JSONObject variacaoJObj = suOBj1.getJSONObject("variacao"); 
     JSONObject varJObj1 = variacaoJObj.getJSONObject("variationcustom1bla"); 
     String descricao1 = varJObj1.getString("descricao"); 
     String preco1 = varJObj1.getString("preco"); 
     String percentual1 = varJObj1.getString("percentual"); 
     JSONObject varJObj2 = variacaoJObj.getJSONObject("variationcustom1bla"); 
     String descricao2 = varJObj2.getString("descricao"); 
     String preco2 = varJObj2.getString("preco"); 
     String percentua2 = varJObj2.getString("percentual"); 
     JSONObject varJObj3 = variacaoJObj.getJSONObject("variationcustom1bla"); 
     String descricao3 = varJObj3.getString("descricao"); 
     String preco3 = varJObj3.getString("preco"); 
     String percentual3 = varJObj3.getString("percentual"); 

     JSONObject varJObj4 = variacaoJObj.getJSONObject("variationcustom1bla"); 
     String descricao4 = varJObj4.getString("descricao"); 
     String preco4 = varJObj4.getString("preco"); 
     String percentual4 = varJObj4.getString("percentual"); 
     JSONObject suOBj2 = jProdutos.getJSONObject("Suitetematica"); 
     JSONObject vaJsonObject = suOBj2.getJSONObject("variacao"); 
     JSONObject varBla2 = vaJsonObject.getJSONObject("variation bla2 custom bla2"); 
     String descricao5 = varBla2.getString("descricao"); 
     String preco5 = varBla2.getString("preco"); 
     String percentua5 = varBla2.getString("percentual"); 
     JSONObject Pernoites = vaJsonObject.getJSONObject("Pernoites"); 
     String descricao6 = Pernoites.getString("descricao"); 
     String preco6 = Pernoites.getString("preco"); 
     String percentua6 = Pernoites.getString("percentual"); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

可能這將有助於正確理解。

+0

這不是非常有效 –

+0

@MartinDeSimone如何更好的方式讓我更容易Java操作json,因爲我可以改變它 –

+0

是的,這看起來像硬編碼。他必須以良好的方式創建json。如果這是json,你必須這樣做。如果你有其他方法,請告訴我。 – guptaatul91

0
JSONObject produtos= new JSONObject(json); 
JSONObject object = produtos.optJSONObject("produtos");