Java中的内部类和静态嵌套类之间的主要区别是什么?设计/实施是否在选择其中一个方面发挥作用?
我正在使用Jackson ObjectMapper将一些JSON反序列化为Java类,我们将其称之为PlayerData.我想在类中添加一些逻辑来在PlayerData加载字段后修复一些数据.例如,一些早期的JSON文件用于使用"性别"标志而不是"性别"标志,所以如果性别标志已设置但性别标志未设置,我想将性别字段的值设置为性别字段的值.
是否有某种@PostConstruct或@AfterLoad注释可以粘贴到方法中?或者也许是我可以实现的界面?我没有注意到文档中的一个,但它似乎是一个显而易见的功能.
首先,我知道这个问题:CustomDeserializer没有默认(无arg)构造函数
我使用了推荐的解决方案,但仍然存在同样的问题.当我尝试反序列化我的json时,我仍然得到错误.
我想要对我的对象进行自定义反序列化.我的单元测试看起来如下:
Service service = new Service();
service.setId("ID");
service.setTitle("Title");
service.setDescription("Description");
service.setType("Service");
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(service);
Service service2 = mapper.readValue(json, Service.class);
Run Code Online (Sandbox Code Playgroud)
我的反序列化器(包含目前单元测试未涵盖的一些功能,但他甚至没有这么做):
public class ServiceDeserializer extends StdDeserializer<Service> {
public ServiceDeserializer() {
super(Service.class);
}
@Override
public Service deserialize(final JsonParser jp, final DeserializationContext ctxt)
throws IOException, JsonProcessingException {
DataBaseManagment manager = DataBaseManagmentManager.getInstance();
List<DataObject> objects = manager.readAll("Utility", true);
JsonNode node = jp.getCodec().readTree(jp);
String id = node.get("id").asText();
String title = node.get("title").asText();
String description = node.get("description").asText();
Service service = …Run Code Online (Sandbox Code Playgroud) 我有REST资源接收JSON对象,该对象是从用户ID到某个布尔值的映射,指示此用户是否有错误.
由于我期待大量用户,我想通过使用1/0而不是true/false来缩小此JSON的大小.
我试过并发现在脱盐过程中杰克逊会成功地将1/0转换为真/假,但是有没有办法告诉杰克逊(可能使用注释?)将这个布尔字段序列化为1/0而不是真/假?