Gson json得到了结果

时间:2012-06-15 04:30:23

标签: java android 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",

            }
        ]
    }
}

我尝试根据stackoverflow上的不同问题对其进行反序列化,但我无法做到正确。 以下是我创建的课程,我只需要accountnum和名称。

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);

我收到一个空字符串。 感谢

2 个答案:

答案 0 :(得分:1)

由于有一个对象持有您尝试创建的结果对象,因此您将结果类设为内部类。你Result课必须看起来像这样:

public class ResultParent {

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

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

答案 1 :(得分: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);