Поиск по этому блогу

вторник, 8 января 2013 г.

Как конвертировать Java объект в JSON и обратно при помощи GSON

Всем привет! Вот и наступил 2013 год и это моя первая в новом году статья. Очень надеюсь на то, что в новом году буду писать новые статьи каждую неделю. Моя новая статья про библиотеку GSON от Google. GSON предназначен для конвертации Java объектов в JSON и обратно. GSON является очень простой для использования библиотекой.

Теперь о том что такое JSON. JSON - это легковесный текстовый формат обмена данными. Более подробно о нем можно прочитать тут http://ru.wikipedia.org/wiki/JSON В Java мы работаем с объектами, поэтому возникает необходимость конвертировать Java объекты в JSON и обратно.
В GSON нам понадобиться всего два метода: один для конвертации Java объекта в JSON и второй для обратной задачи.
Gson gson = new Gson();    

  1. String json = gson.toJson(Object obj); для конвертации Java объекта в JSON
  2. obj = gson.fromJson(Object obj, Class class); для конвертации JSON в Java объект


Maven dependency для подключения GSON.

Для использования библиотеки GSON в проекте необходимо прописать следующую зависисмость в pom.xml файле. Для подключения библиотеки без использования maven нужно скачать библиотеку отсюда http://code.google.com/p/google-gson/downloads/list
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.2.2</version>
</dependency>

POJO 

Напишем простой Java класс, объекты которого мы и будем конвертировать в JSON и обратно.
Переопределим метод toString(), он нам понадобится при проверке конвертации из JSON в Java объект. 
package com.ipoint.danilov.GSONExample;
 
import java.util.ArrayList;
import java.util.List;
 
public class Truck {
 
 private int capacity;
 
 private String type;
 
 private String name;
 
 private List<String> cargos = new ArrayList<String>();
 
 @Override
 public String toString() {
  return "Truck [capacity=" + capacity + ", type=" + type + ", name="+ name + ", cargos=" + cargos +"]";
 
 // getters and setters methods
 
}

Конвертация Java объекта в JSON и обратно

package com.ipoint.danilov.GSONExample;
 
import com.google.gson.Gson;
 
public class App 
{
    public static void main( String[] args )
    {
     // создаем экземпляр объекта который будем конвертировать в JSON
        Truck truck = new Truck();
        // задаем значения его полям
        truck.setName("Грузовик");
        truck.setCapacity(200);
        truck.setType("Крытый кузов");
        truck.getCargos().add("Первый груз");
        truck.getCargos().add("Второй груз");
        truck.getCargos().add("Третий груз");
        truck.getCargos().add("Четвертый груз");
 
     // конвертируем наш JAVA объект в JSON
     Gson gson = new Gson();
 
     String json = gson.toJson(truck);
     // и выводим результат
     System.out.println(json);
 
     // конвертируем из JSON обратно в JAVA объект
     truck = null;
 
     truck = gson.fromJson(json, Truck.class);
     // и снова выводим результат
     System.out.println(truck);
    }
}

Результат конвертации в JSON
{"capacity":200,"type":"Крытый кузов","name":"Грузовик","cargos":["Первый груз","Второй груз","Третий груз","Четвертый груз"]}

Результат конвертации из JSON в JAVA объект
Truck [capacity=200, type=Крытый кузов, name=Грузовик, cargos=[Первый груз, Второй груз, Третий груз, Четвертый груз]]

Использование GSON в GWT проектах.

Использовать GSON в GWT проекте на стороне клиента не получится, так как GSON использует более сложные возможности Java  (например, рефлексию), которые не поддерживается GWT на клиенте.

1 комментарий:

  1. Я Артур Борис, житель / гражданин Российской Республики. Мне 52 года, предприниматель / предприниматель. Когда-то у меня были трудности с финансированием моего проекта / бизнеса, если бы не мой хороший друг, который представил меня мистеру Бенджамину Ли, чтобы получить кредит на сумму 250 000 долларов США от его компании. Когда я связался с ними, потребовалось всего пять рабочих дней, чтобы завершить процесс получения кредита и перевести его на мой счет. Даже с плохой кредитной историей, они все еще предлагают свои услуги вам. Они также предлагают все виды кредитов, такие как бизнес-кредиты, ипотечные кредиты, личные кредиты, автокредиты. Я не знаю, как поблагодарить их за то, что они сделали для меня, но Бог вознаградит их в соответствии с его богатством во славе. Если вам нужна срочная финансовая помощь, свяжитесь с ними сегодня по электронной почте lfdsloans@outlook.com WhatsApp information ... + 1-989-394-3740

    ОтветитьУдалить