Gson.toJson 不从对象转换布尔值
Gson.toJson not converting boolean values from object
Google 的 Gson.toJson(Object src) 不转换布尔值。
例如,我的 Java 对象是说:
class MyObj {
private String name;
private boolean teen;
//getter,setter ommitted...
}
MyObj obj = new MyObj();
obj.setName("Me");
obj.isTeen(false);
Gson.toJson(obj);
在转换这个对象时它是这样写的
MyObj { "name" : "Me" }
虽然有一个值,但缺少布尔值。
仅当字段定义为 transient
或 static
.
时,Gson 才不会序列化这些字段
如果您尚未将布尔字段定义为静态或瞬态,json 应该有该字段。
我不确定您是如何使用 isTeen()
方法将值设置为布尔字段的。它应该给出编译错误,除非你对布尔字段有非平凡的 "is" 方法。 "is" 方法基本上等同于 String/other 字段的 "get" 方法。通常,它不会用于设置值。
我刚刚提供了带有 getter 和 setter 的完整代码。请检查这是否有效。
public class MyObj {
private String name;
private boolean teen;
public String getName() {
return name;
}
public boolean isTeen() {
return teen;
}
public void setName(String name) {
this.name = name;
}
public void setTeen(boolean teen) {
this.teen = teen;
}
}
主要方法:-
public static void main(String[] args) {
Gson gson = new Gson();
MyObj obj = new MyObj();
obj.setName("Me");
obj.setTeen(false);
System.out.println(gson.toJson(obj));
}
输出:-
{"name":"Me","teen":false}
有趣的一点是,即使你没有为布尔字段设置任何值。它将采用默认值 false 并且生成的 JSON 将具有 false.
Google 的 Gson.toJson(Object src) 不转换布尔值。 例如,我的 Java 对象是说:
class MyObj {
private String name;
private boolean teen;
//getter,setter ommitted...
}
MyObj obj = new MyObj();
obj.setName("Me");
obj.isTeen(false);
Gson.toJson(obj);
在转换这个对象时它是这样写的
MyObj { "name" : "Me" }
虽然有一个值,但缺少布尔值。
仅当字段定义为 transient
或 static
.
如果您尚未将布尔字段定义为静态或瞬态,json 应该有该字段。
我不确定您是如何使用 isTeen()
方法将值设置为布尔字段的。它应该给出编译错误,除非你对布尔字段有非平凡的 "is" 方法。 "is" 方法基本上等同于 String/other 字段的 "get" 方法。通常,它不会用于设置值。
我刚刚提供了带有 getter 和 setter 的完整代码。请检查这是否有效。
public class MyObj {
private String name;
private boolean teen;
public String getName() {
return name;
}
public boolean isTeen() {
return teen;
}
public void setName(String name) {
this.name = name;
}
public void setTeen(boolean teen) {
this.teen = teen;
}
}
主要方法:-
public static void main(String[] args) {
Gson gson = new Gson();
MyObj obj = new MyObj();
obj.setName("Me");
obj.setTeen(false);
System.out.println(gson.toJson(obj));
}
输出:-
{"name":"Me","teen":false}
有趣的一点是,即使你没有为布尔字段设置任何值。它将采用默认值 false 并且生成的 JSON 将具有 false.