如何在使用Jackson序列化为JSON时转换Java Map中的Java List

时间:2011-12-06 15:50:30

标签: java json serialization map jackson

我在Java中有一个带有 Person 的列表,每个人都有一个id:

class Person{
  public int id;
  public String name;
}

现在我喜欢用JSON序列化这个列表:

{
  "1":{
    "name": "tom"
  },{
  "2":{
    "name": "bob"
  }
}

包含列表的类是否有任何anotation来指定JSON结构?

感谢。

2 个答案:

答案 0 :(得分:2)

一种可能性是,如果您总是希望以这种方式序列化人员,您可以为类型添加自定义序列化程序,并注册它。有多种方法可以执行此操作:使用SimpleModule进行注册,或者在@JsonSerialize(using=PersonSerializer.class)类上使用Person(此注释也可用于属性;如果两者都使用属性,则属性优先定义的)。

答案 1 :(得分:1)

要严格使用Person类完成上述操作,您需要

  1. 使用地图
  2. 另一个代表name
  3. 的班级
    class PersonName{
      String name;
    }
    
    Map<int, String> map = new HashMap<int, String>();
    
    map.put(person.getId(), personName);