我已将BooleanProperty添加到DAO类中,该类将序列化为JSON并发送到服务器以保存在MySQL数据库中。我使用BooleanProperty的原因是因为我想对JavaFX桌面应用程序中的'isActive'字段使用数据绑定。
要序列化的类:
package com.example.myapplication
import lombok.Data;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
@Data
public class MyDAO {
private int id;
private String firstName;
private String lastname;
private final BooleanProperty isActive = new SimpleBooleanProperty();
}
我正在使用Gson序列化为JSON:
StringEntity entity = new StringEntity(new Gson().toJson(myDTO), "UTF-8");
当此序列化为JSON时,看起来像这样:
{
"id":0,
"first_name":"Joe",
"last_name":"Bloggs",
"is_active":{
"name":"",
"value":false,
"valid":true
}
}
这会在反序列化(使用Jackson时,在服务器上引起问题,因为服务器希望布尔值与将保存在数据库中的值相对应)。是否有办法从BooleanProperty中反序列化真/假值?
这是我希望在服务器中看到的内容:
{
"id":0,
"first_name":"Joe",
"last_name":"Bloggs",
"is_active": false,
}
尝试一下
Gson gson = FxGson.coreBuilder().setPrettyPrinting().disableHtmlEscaping().create();
StringEntity entity = new StringEntity(gson.toJson(myDTO), "UTF-8");
我相信答案是将您不想序列化的字段标记为transient
,并添加包含该值的布尔字段。
@Data
public class MyDAO {
private int id;
private String firstName;
private String lastname;
private transient final BooleanProperty booleanProp = new SimpleBooleanProperty();
private boolean isActive = booleanProp.get();
}