【问题标题】: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。因此,如果您想更改日期格式或其他任何内容,则必须在此处进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2018-01-23
      • 1970-01-01
      相关资源
      最近更新 更多