我正在尝试从服务器解析JSON。我有Pojo模型,但服务器JSON发送boolean为True,False而不是true,false。是否可以使用自定义GSONbuilder等进行映射。
这是我的班级
public class User {
private String id;
private String name;
private boolean isOnline;
}
这是我的服务器JSON
{
"user": {
"id": 1,
"name": "Abc",
"isOnline": True
}
}
User user = new Gson()。fromJSON(json,User.class);
答案 0 :(得分:1)
你做错了。如果您的json字符串是您给出的方式,则需要使用用户对象创建另一个模型类,并在序列化时为其提供类。或者像我在下面的代码中那样做。 True
或true
并不重要。
public class HelloWorld {
public static void main(String args[]) {
String json = "{'id': 1,'name': 'Abc','isOnline': True}";
User user = new Gson().fromJson(json, User.class);
System.out.println(user);
}
}
class User {
private String id;
private String name;
private boolean isOnline;
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", isOnline=" + isOnline
+ "]";
}
}
,输出
User [id=1, name=Abc, isOnline=true]
重新创建模型状态(Desererialization)是通过反射完成的,并且区分大小写的布尔字符串。 你可以通过
检查一下System.out.println(Boolean.parseBoolean("true"));
System.out.println(Boolean.parseBoolean("True"));
答案 1 :(得分:0)
假设您在此处使用Google Gson,则您的对象创建不正确;你需要你的JSON看起来像这样才能工作:
{
"id": 1,
"name": "Abc",
"isOnline": True
}
要按给定方式解压缩响应,请定义另一个类:
public class JsonResponse {
private User user;
}
...并解压缩:
JsonResponse user = new Gson().fromJSON(json, JsonResponse.class);
...这应该会为您提供正确填充用户的回复。
答案 2 :(得分:-1)
您需要编写自定义反序列化程序。以下是一些例子: