【问题标题】:How I can unwrap key and value objects in java Map using Jackson anotations?如何使用 Jackson 注释解开 java Map 中的键和值对象?
【发布时间】:2020-07-16 20:48:39
【问题描述】:
我有这样的豆子
public class PickupDate {
private LocalDate date;
}
我想将 Map 对象序列化为
{
"2020-07-17": 1
}
不要
{
"PickupDate@1ecd0470[date=2019-12-01]": {
"capacity": 0
}
【问题讨论】:
标签:
java
json
serialization
jackson
【解决方案1】:
您应该覆盖 PickupDate 的 toString() 方法。容量来自您拥有的其他对象。如果您提供实际代码会更清楚。
主类:
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Map<PickupDate, Integer> map = new HashMap<>();
map.put(new PickupDate(LocalDate.now()), 1);
System.out.println(mapper.writeValueAsString(map));
}
接机:
class PickupDate {
private LocalDate date;
public PickupDate(LocalDate date) {
this.date = date;
}
//Here you put whatever you want to be in the JSON
@Override
public String toString() {
return date.toString();
}
}
结果:{"2020-07-16":1}
toString() 方法返回的任何内容都写入 JSON。因此,如果您想更改日期格式或其他任何内容,则必须在此处进行。