2012-06-15 99 views
0

我有一個JSON字符串是這樣的:GSON JSON得到的結果

{ 
    "d": { 
     "results": [ 
      { 
       "__metadata": { 
        "uri": "http://localhost:2000", 
        "key_fields": "Accountnum", 
        "rows_affected": 0, 
        "last_autoinc": 0 
       }, 
       "Accountnum": "9999999", 
       "workphone": null, 
       "name": "Smith", 
       "address": "33 Main St", 
       "city": "Anytown", 
       "state": "FL", 
       "zip": "33333", 

      } 
     ] 
    } 
} 

,我試圖根據這裏計算器不同勢問題,反序列化,但我不能得到它的權利。 這是我創建的課程,我只需要accountnum和name。

public class Result { 
    @SerializedName("Accountnum") 
    public String accountnumStr; 

    @SerializedName("name") 
    public String nameStr;  
} 

我有一個字符串與json myresult。

Gson gson = new Gson(); 
Result result = gson.fromJson(myresult,Result.class); 
myName.setText(result.nameStr); 

我收到一個空字符串。 謝謝

+1

還有另一個對象之外包含涉嫌導致JSON對象。 – nhahtdh

回答

0

如果您觀察類對象的條款提出你的JSON那麼這將是一點問題都沒有。假設你的根對象包含一個名爲「D」類型爲「D」的屬性。而類型「D」包含另一類型「結果」的「結果」列表。結果包含如上的屬性。下面是它的畫面:

class RootObj { 
    D d; 
} 

class D { 
    List<Result> results; 
} 

class Result { 
    @SerializedName("Accountnum") 
    public String accountnumStr; 

    @SerializedName("name") 
    public String nameStr; 
} 

若要從JSON獲取的對象,你會做以下幾點:

Gson g = new Gson();  
RootObj ro = g.fromJson(jsonString, RootObj.class); 
+0

好吧,我做了三個類,但我將如何檢索nameStr。 –

+0

我發現的唯一方法是ro.d.results.get(0).nameStr,這是正確的方法嗎? –

1

由於有一個對象持有您嘗試創建的結果對象,因此您已將結果類設置爲內部類。你Result類必須是這樣的:

public class ResultParent { 

    public class Result { 
     @SerializedName("Accountnum") 
     public String accountnumStr; 

     @SerializedName("name") 
     public String nameStr;  
    } 
}