среда, ноября 28, 2012

Преобразование java-объекта, списка java-объектов в JSON и из JSON

Пусть есть такой простой класс


class Book {
private String name;
private List authors;
        ...
}

Мне нужно отображать экземпляры этого класса либо список таких экземпляров в JSON и получать их из JSON обратно.

Попалась и понравилась библиотека Gson от гугла, с ней такие вещи делаются легко и удобно. К проекту нужно добавить одну jar-ку размером 185KB.

Отображение одного объекта 

Book book = new Book();

book.setName("Test Book");
book.addAuthor("A");
book.addAuthor("Б");

Gson gson = new Gson();
String result = gson.toJson(book);

В результате получаем:
{"name":"Test Book","authors":["A","Б"]}

Восстановление объекта из JSON

book = gson.fromJson(result, Book.class);


Отображение списка объектов

Book book2 = new Book();
book2.setName("Test Book 2");
book2.addAuthor("A2");
book2.addAuthor("Б2");

List books = new ArrayList();
books.add(book);
books.add(book2);
String booksStr = gson.toJson(books);

Получаем:
[{"name":"Test Book","authors":["A","Б"]},{"name":"Test Book 2","authors":["A2","Б2"]}]

Восстановление списка объектов

Type collectionType = new TypeToken>(){}.getType();
List gBooks = gson.fromJson(booksStr, collectionType);

Готово!