我有一些 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(使用前将#替换为@)