GSON JSON得到结果(Gson json getting the result)

2019-10-31 19:23发布

我有一个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和名称。

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

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

Answer 1:

如果您在可视化类对象的条款提出你的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);


Answer 2:

由于有保存结果的对象反对你去创造,你必须做的结果类的内部类。 你是Result类必须是这样的:

public class ResultParent {

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

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


文章来源: Gson json getting the result