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