用于对象列表的 Jakson 自定义序列化程序
Jakson custom serializer for list of objects
我有一个自定义的 jackson 序列化程序,它适用于序列化单个 pojo。我正在尝试序列化对象列表。如果没有自定义序列化程序,我可以这样做:
public List<Sale> getAllSales() {
return saleRepository.getAll();
}
效果很好,但我想要 return 一组非常具体的数据,所以我制作了一个自定义序列化程序,它也适用但仅适用于单个对象:
public Sale getSale(int id) {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Sale.class, new SaleSerializer());
mapper.registerModule(module);
Sale sale = saleRepository.findById(1).orElse(null);
return mapper.writeValueAsString(sale);
}
如何为对象列表实现自定义序列化程序?
我不确定这是否是最好的方法,但我最终还是这样做了。
public ArrayNode getAllSalesToday() throws JsonProcessingException {
LocalDate localDate = LocalDate.now();
LocalDateTime startOfDay = localDate.atStartOfDay();
LocalDateTime endOfDay = localDate.atTime(LocalTime.MAX);
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Sale.class, new SaleSerializer());
mapper.registerModule(module);
List<Sale> saleList = saleRepository.getAllByInitialDepositDateIsBetween(startOfDay,endOfDay);
ArrayNode arrayNode = mapper.createArrayNode();
for (Sale sale: saleList){
String x = mapper.writeValueAsString(sale);
JsonNode jsonNode = mapper.readTree(x);
arrayNode.add(jsonNode);
}
return arrayNode;
}
我有一个自定义的 jackson 序列化程序,它适用于序列化单个 pojo。我正在尝试序列化对象列表。如果没有自定义序列化程序,我可以这样做:
public List<Sale> getAllSales() {
return saleRepository.getAll();
}
效果很好,但我想要 return 一组非常具体的数据,所以我制作了一个自定义序列化程序,它也适用但仅适用于单个对象:
public Sale getSale(int id) {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Sale.class, new SaleSerializer());
mapper.registerModule(module);
Sale sale = saleRepository.findById(1).orElse(null);
return mapper.writeValueAsString(sale);
}
如何为对象列表实现自定义序列化程序?
我不确定这是否是最好的方法,但我最终还是这样做了。
public ArrayNode getAllSalesToday() throws JsonProcessingException {
LocalDate localDate = LocalDate.now();
LocalDateTime startOfDay = localDate.atStartOfDay();
LocalDateTime endOfDay = localDate.atTime(LocalTime.MAX);
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Sale.class, new SaleSerializer());
mapper.registerModule(module);
List<Sale> saleList = saleRepository.getAllByInitialDepositDateIsBetween(startOfDay,endOfDay);
ArrayNode arrayNode = mapper.createArrayNode();
for (Sale sale: saleList){
String x = mapper.writeValueAsString(sale);
JsonNode jsonNode = mapper.readTree(x);
arrayNode.add(jsonNode);
}
return arrayNode;
}