有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我从服务器收到了以下形式的响应

{"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结果中获得各种singles属性作为基元

比如

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
    }
}

我使用了这段代码来反序列化JSONObjectserverResponse

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

但现在我不知道如何获取内部json的单个属性

如果我使用代码

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

获取空指针异常


共 (1) 个答案

  1. # 1 楼答案

    假设您有一个变量或一个包含服务器响应的返回数据,您可以尝试以下方法:

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

    或者

    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对象,但我喜欢使用点符号。请注意,您不能总是使用它,因为您必须知道属性是否有子节点