Давайте посмотрим, как мы можем использовать JSON-процессор Jackson Java для преобразования Java-объекта в JSON и наоборот. Мы можем скачать jackson-all-1.6.4.jar со страницы загрузки Jackson .
Ключевым классом, который выполняет маршалинг и демаршаллинг, является org.codehaus.jackson.map.ObjectMapper .
Давайте создадим пользовательский Java-бин следующим образом:
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
 | 
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   } | 
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
 | 
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:
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
 | 
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 как:
  { 
  «Идентификатор пользователя»:»1″, 
  «Username»: 
  { 
  «Имя»:»Katamreddy», 
  «MiddleName»:»Сива», 
  «Фамилия»:»PrasadReddy» 
  }, 
  «Д.р.»: 1300878089906 
  } 
Теперь давайте удалим следующие пользовательские данные в формате json в User Object:
  { 
  «Идентификатор пользователя»:»100″, 
  «Username»: 
  { 
  «Имя»:»К», 
  «MiddleName»:»Сива», 
  «Фамилия»:»Прасад» 
  }, 
  «Д.р.»: 1300878089906 
  } 
| 
 1 
2 
3 
4 
5 
 | 
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 как:
Пользователь [dob = Ср 23 марта 16:31:29 IST 2011, userId = 100, userName = UserName [имя = K, фамилия = Prasad, middlename = Siva]]
Значение Date маршалируется как Timestamp, что является поведением по умолчанию. Если вы хотите, вы можете изменить DateFormat следующим образом:
| 
 1 
2 
3 
4 
5 
6 
 | 
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 будет:
  { 
  «Идентификатор пользователя»:»1″,»Username»: 
  { 
  «Имя»:»Katamreddy», 
  «MiddleName»:»Сива», 
  «Фамилия»:»PrasadReddy» 
  }, 
  «Д.р.»:»03-23-2011″ 
  } 
Мы также можем маршалировать Java-объект как json в файл как:
| 
 1 
 | 
mapper.writeValue(new File("user.json"), user); | 
Это создаст файл user.json как:
  { 
  «Идентификатор пользователя»:»100″, 
  «Username»: 
  { 
  «Имя»:»К», 
  «MiddleName»:»Сива», 
  «Фамилия»:»Прасад» 
  }, 
  «Д.р.»: 1300878089906 
  } 
Мы можем построить объект User из user, json как:
| 
 1 
 | 
User user = mapper.readValue(new File("user.json"), User.class); | 
Справка: обработка JSON с использованием JSON-процессора Jackson Java от нашего партнера по JCG Сивы Прасад Редди .
Статьи по Теме: