使用gson从Json响应获取嵌套属性的确切语法

时间:2012-03-08 17:27:29

标签: java json gson

我从服务器收到此表单的回复

{"error":null,"id":1,"result":{"admin":false,"firstname":"Jason","id":346,"idHotel":109,"idVendor":null,"lastname":"Butcher","sessionkey":"3c8a17ae47a6d131b1a14b44a1d8f9a9","urlAvatar":"avatar_316_mjm.jpg","urlThumb":"thumb_316_mjm.jpg"}}

并希望获得各种单一属性,在嵌套的json结果中作为原始

例如

Boolean error=..;
String admin=....;
String idHotel=...;

我试图以这种方式上课

public class HotelLogin {
    public boolean error;
    public int id;
    public Result result;
    //get and set


    public static class Result {
       public String lastname;

       ...
       ...//get and set
    }
}

我使用此代码绑定反序列化JSONObject serverResponse

HotelLogin loggedRs= new HotelLogin();
Gson gson = new Gson();
response = gson.fromJson(serverResponse, HotelLogin.class);

但此时我不知道如何获得内部json的单一属性。

如果我使用代码

Result user=login.getResult();
String lastname=user.getLastname();

获取空指针异常

1 个答案:

答案 0 :(得分:-1)

好吧,假设你有一个包含服务器响应的变量或返回数据,你可以试试这个:

var newError = data.Error;
var newId    = data.Id;
var newFirstName = data.result.firstname;

OR

var serverResponse = data; //(considering that this 'data' is your json object);

//you access it through dot notation.

serverResponse.error;
serverResponse.result.admin;
serverResponse.result.id;

每个人都会获得您所需的数据。如果您愿意,可以遍历您的json对象,但我喜欢使用点表示法。请注意,您不能总是使用它,因为必须知道某个属性是否有子节点。