Gson json getting the result

空扰寡人 提交于 2019-12-11 14:07:26

问题


I have a json string like this:

{
    "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",

            }
        ]
    }
}

and I tried to deserialize it according to diffrent questions here on stackoverflow, but I can't get it right. Here is what I did I created a class, I only need the accountnum and name.

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

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

I have a string with the json myresult.

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

I receive an empty string. Thanks


回答1:


If you visualize your JSON in terms of class objects then it will be no problem at all. Imagine that your root object contains a property named "d" of type "D". And type "D" contains a list of "results" of another type "Result". The result contains its properties as above. Here's the picture of it:

class RootObj {
    D d;
}

class D {
    List<Result> results;
}

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

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

To get the objects from a JSON, you would do the following:

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



回答2:


Since there is a object holding the result object your trying to create, you have make the result class an inner class. You're Result class would have to look like this:

public class ResultParent {

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

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


来源:https://stackoverflow.com/questions/11044605/gson-json-getting-the-result

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!