Как преобразовать список Java в карту Java при сериализации в JSON с Джексоном - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть список с Person на Java, и у каждого человека есть id:

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

Теперь мне нравится сериализовать этот список в формате JSON:

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

Существует ли какая-либо аннотация для класса, содержащего список, для указания структуры JSON?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Одна из возможностей состоит в том, что если вы всегда хотите, чтобы Persons сериализовался таким образом, вы можете добавить собственный сериализатор для типа и зарегистрировать его.Есть несколько способов сделать это: либо использовать SimpleModule для его регистрации, либо использовать @JsonSerialize(using=PersonSerializer.class) в классе Person (эту аннотацию также можно использовать для свойств; свойство 1 будет иметь приоритет, если оба определены).

1 голос
/ 07 декабря 2011

Чтобы выполнить вышесказанное строго с использованием класса Person, вам необходимо

  1. Для использования карты
  2. Другой класс для представления name
class PersonName{
  String name;
}

Map<int, String> map = new HashMap<int, String>();

map.put(person.getId(), personName);
...