使用 Gson 解析时跳过级别

2024-02-23

我有一些 json 格式,如下所示:

{
"root": {
    "user": {
        "name":"Name",
        "age":99,
        "another_obj": {
            "f1":"abc",
            "f2":1
        }
    }
},
"result_code": 0
}

我创建了一些模型,如下所示:

class User {
private String name;
private int age;
@SerializedName("detail")
private Detail
}

class Detail{
   // Define something.
}

最后我创建了类名 UserWapper。

class UserWapper {
@SerializedName("root")
private User user;  
}

解析 json:

String json = "STRING_JSON_ABOVE";
Gson gson = new Gson();
UserWrapper uw = gson.fromJson(json, UserWrapper.class);

但目前我不想创建类包装器。因为我有很多很多课。如果创建 WrapperClass -> :|

我想做类似的事情:

User u = gson.fromJson(json, User.class).

(注意:我无法从服务器更改格式数据 json。我还搜索了一些自定义 gson 适配器,但我找不到跳过“级别”另一个字段的方法)。


如果您不需要包装类,您可以将 json 字符串解析为JsonObject,然后得到它的user对象,并将用户对象反序列化为您的实例User class.

尝试下面的代码:

String json = "{\"root\":{\"user\":{\"name\":\"Name\",\"age\":99,\"another_obj\":{\"f1\":\"abc\",\"f2\":1}}},\"result_code\":0}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
User u = gson.fromJson(((JsonObject)jsonObject.get("root")).get("user"), User.class);

System.out.println("user.name: " + u.name);
System.out.println("user.age: " + u.age);

Output:

用户名:姓名
用户年龄:99

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gson 解析时跳过级别 的相关文章

随机推荐