Статьи

Обработка JSON с использованием JSON-процессора JSON Джексона

JSON (Javascript Object Notation) становится все более популярным форматом обмена данными.
При разработке веб-приложений с использованием таких сред Javascript, как YUI, ExtJS, DOJO и т. Д., Мы можем использовать XML или JSON для обмена данными между клиентом и сервером. Обычно мы получаем ответ от сервера в терминах Java-объектов. Затем в классах Servlets или Action нам нужно собрать JSON из объектов и отправить их обратно клиенту.

Для создания ответа JSON из объекта Java мы можем использовать JSON-процессор Jackson Java, который очень прост в использовании.

Давайте посмотрим, как мы можем использовать Джексона для преобразования java-объекта в JSON и наоборот.

Мы можем скачать jackson-all-1.6.4.jar с http://jackson.codehaus.org .

Ключевым классом, который выполняет маршалинг и демаршаллинг, является org.codehaus.jackson.map.ObjectMapper.

Давайте создадим javabean пользователя следующим образом:

package com.sivalabs.json;import java.util.Date;public class User{    private String userId;    private UserName userName;    private Date dob;        @Override    public String toString()    {        return "User [dob=" + dob + ", userId=" + userId + ", userName="+ userName + "]";    }    //setters and getters    }

 

package com.sivalabs.json;public class UserName{    private String firstname;    private String middlename;    private String lastname;        @Override    public String toString()    {        return "UserName [firstname=" + firstname + ", lastname=" + lastname+ ", middlename=" + middlename + "]";    }    //setters and getters    }

Теперь давайте создадим экземпляр User и добавим его в JSON:

ObjectMapper mapper = new ObjectMapper();UserName userName = new UserName();userName.setFirstname("Katamreddy");userName.setMiddlename("Siva");userName.setLastname("PrasadReddy");User user = new User();user.setUserId("1");user.setUserName(userName);user.setDob(new Date());Writer strWriter = new StringWriter();mapper.writeValue(strWriter, user);String userDataJSON = strWriter.toString();System.out.println(userDataJSON);

Это будет печатать данные пользователя в формате JSON как:
{«userId»: «1», «userName»: {«firstname»: «Katamreddy», «middlename»: «Siva», «lastname»: «PrasadReddy»}, «dob»: 1300878089906}

Теперь давайте демонтируем следующие пользовательские данные в формате json в объект пользователя:

{
    «userId»: «100»,
    «userName»:
        {
         «firstname»: «K»,
         «middlename»: «Siva» ,
         «фамилия»: «Прасад»
        },
    «доб»: 1300878089906
}

String userDataJSON = "{\"userId\":\"100\",\"userName\":{\"firstname\":\"K\",\"middlename\":\"Siva\",\"lastname\":\"Prasad\"},\"dob\":1300878089906}";User userFromJSON = mapper.readValue(userDataJSON, User.class);System.out.println(userFromJSON);

Это будет печатать объект User как:
User [dob = ср. 23 марта 16:31:29 IST 2011, userId = 100, userName = UserName [firstname = K, фамилия = Prasad, middlename = Siva]]

Значение даты маршалируется как Отметка времени, которая является поведением по умолчанию. Если вы хотите, вы можете изменить DateFormat следующим образом:

DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");SerializationConfig serConfig = mapper.getSerializationConfig();serConfig.setDateFormat(dateFormat);DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();deserializationConfig.setDateFormat(dateFormat);mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);

Тогда пользователь JSON будет:
{«userId»: «1», «userName»: {«firstname»: «Katamreddy», «middlename»: «Siva», «lastname»: «PrasadReddy»}, «dob»: «03-23-2011»}

Мы также можем маршалировать Java-объект как json в файл как:

mapper.writeValue(new File("user.json"), user);

Это создаст файл user.json как:
{
    «userId»: «100»,
    «userName»:
        {
         «firstname»: «K»,
         «middlename»: «Siva»,
         «lastname»: «Prasad»
        },
    » dob «: 1300878089906
}

Мы можем построить объект User из user, json как:

User user = mapper.readValue(new File("user.json"), User.class);

Для получения дополнительной информации вы можете посетить http://jackson.codehaus.org

 

От: http://sivalabs.blogspot.com/2011/03/json-processing-using-jackson-java-json.html