Вопрос:

gson - включить имя класса при сериализации java pojo -> json

java json gson

5422 просмотра

1 ответ

1167 Репутация автора

Используя GSON, как мне добавить имя класса моего Списка к моей выведенной строке json? Я посмотрел через API и пропустил любую ссылку, чтобы сделать это. Я использую GsonBuilder в своем реальном коде, но также не вижу вариантов для него.

public class Person {
  String name;

  public Person(String name){
    this.name = name;
  }

  public static void main(String [] args){
    Person one = new Person("Alice");
    Person two = new Person("Bob");

    List<Person> people = new ArrayList<Person>();
    people.add(one);
    people.add(two); 

    String json = new Gson(people);
  }
}

Это дает следующий вывод:

json = [{"name": "Alice"}, {"name": "Bob"}]

Как мне добиться следующего результата? или что-то подобное.

json = {"person": [{"name": "Alice"}, {"name": "Bob"}]}

или же

json = [{"person": {"name": "Alice"}}, {"person": {"name": "Bob"}}]

Надеюсь, это что-то тривиальное, что я только что пропустил. Заранее спасибо.

Автор: feargal Источник Размещён: 07.11.2012 03:13

Ответы (1)


5 плюса

978 Репутация автора

Решение

Я не знаю, интересен ли вам ответ, но вы можете сделать следующее:

public static void main(String [] args){
    Person one = new Person("Alice");
    Person two = new Person("Bob");

    List<Person> people = new ArrayList<Person>();
    people.add(one);
    people.add(two); 

    Gson gson = new Gson();
    JsonElement je = gson.toJsonTree(people);
    JsonObject jo = new JsonObject();
    jo.add("person", je);
    System.out.println(jo.toString()); //prints {"person":[{"name": "Alice"},{"name": "Bob"}]}
}
Автор: Pierre Размещён: 27.11.2012 06:39
Вопросы из категории :
32x32