2013-02-03 109 views
0

我的JSON對象的格式:JSON對象爲空,而解析

String jsonObjRecv = { 
     "response":{ 
     "respobj":{ 
     "id":<int>, 
     "number":<string>, 
     "validated":<boolean> 
     } 
     }, 
     "status":"ok", 
     "errors":null 
     } 

它工作時的代碼是:

 JSONObject jsonObjCont = new JSONObject(jsonObjRecv); 
     String getString= jsonObjCont.toString(2); 

在這種情況下的getString = null,並且我可以接收數據,但是當我嘗試獲取JSON對象的嵌套數據時:

 JSONObject jsonObjCont = new JSONObject(jsonObjRecv); 
     JSONObject regNumber = jsonObjCont.getJSONObject("respobj"); 
     String number= regNumber.getString("number"); 

它不工作。

我試圖用GSON庫,但是當它的工作原理:

public String parse(String jsonObjRecv) { 
    JsonElement jelement = new JsonParser().parse(jsonObjRecv); 
    String result = jelement.toString(); 
    return result; 

並不起作用:

public String parse(String jsonObjRecv) { 
    JsonElement jelement = new JsonParser().parse(jsonObjRecv); 
    JsonObject jobject = jelement.getAsJsonObject(); 
    jobject = jobject.getAsJsonObject("respobj"); 

    String result = jobject.get("number").toString(); 
    return result; 

哪裏是我的錯?

+0

當你說它不起作用時, 怎麼了?你會得到一個異常或意外的輸出? http://google-gson.googlecode.com/svn/tags/1.1.1/docs/javadocs/com/google/gson/JsonElement.html –

+0

您可以顯示_real_ JSON輸入嗎? – fge

+0

@AuuragKapur - 你只是鏈接到一個*古*版的'Gson' –

回答

0

問題是您沒有正確訪問您的JSON對象 - 它是一個包含response對象的對象,其中包含respobj對象。

Gson示例如下。請注意代碼中的註釋 - 您需要獲取response對象,然後從中獲取respobj

public static void main(String[] args) 
{ 
    String jsonObjRecv = "{\"response\":{\"respobj\":{\"id\":1,\"number\":\"22\",\"validated\":true}},\"status\":\"ok\",\"errors\":null}"; 

    JsonElement jelement = new JsonParser().parse(jsonObjRecv); 
    JsonObject jobject = jelement.getAsJsonObject(); 

    // Here is where you're making an error. You need to get the outer 
    // 'response' object first, then get 'respobj' from that. 
    jobject = jobject.getAsJsonObject("response").getAsJsonObject("respobj"); 

    String result = jobject.get("number").getAsString(); 

    System.out.println(result); 

} 

輸出:

編輯補充:注意我用getAsString()toString() - 如果你使用後你得到的原始JSON將incluse的(例如輸出將是"22"

+0

是的,它適用於我! –