上一篇文章中,提到java中使用jackson做序列化与反序列化,今天就具体说说Jackson如何做序列化与反序列化。
Customer类
public class Customer {
private Long Id;
private String Username;
private String Password;
public Long getId() {
return Id;
}
public void setId(Long id) {
Id = id;
}
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
}
1.实体类转json
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
Customer customer = new Customer();
customer.setId(1L);
customer.setUsername("justin");
customer.setPassword("1234");
System.out.println("JsonGenerator");
jsonGenerator.writeObject(customer);
System.out.println();
System.out.println("objectMapper");
objectMapper.writeValue(System.out, customer);
输出结果:JsonGenerator
{"id":1,"username":"justin","password":"1234"}
objectMapper
{"id":1,"username":"justin","password":"1234"}
2)集合转化成json
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
List<Customer> list = new ArrayList<Customer>();
Customer customer1 = new Customer();
customer1.setId(1L);
customer1.setUsername("justin1");
customer1.setPassword("1234");
list.add(customer1);
Customer customer2 = new Customer();
customer2.setId(2L);
customer2.setUsername("justin2");
customer2.setPassword("12345");
list.add(customer2);
System.out.println("jsonGenerator list");
//list转换成JSON字符串
jsonGenerator.writeObject(list);
System.out.println();
System.out.println("ObjectMapper2");
//用objectMapper直接返回list转换成的JSON字符串
System.out.println("1###" + objectMapper.writeValueAsString(list));
System.out.print("2###");
//objectMapper list转换成JSON字符串
objectMapper.writeValue(System.out, list);
输出结果:jsonGenerator list
[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
ObjectMapper2
1###[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
2###[{"id":1,"username":"justin1","password":"1234"},{"id":2,"username":"justin2","password":"12345"}]
3)Map转json
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
Customer customer1 = new Customer();
customer1.setId(1L);
customer1.setUsername("justin1");
customer1.setPassword("1234");
Map<String, Object> map = new HashMap<String, Object>();
map.put("account", customer1);
customer1 = new Customer();
customer1.setUsername("du");
customer1.setPassword("1222");
map.put("account2", customer1);
System.out.println("jsonGenerator");
jsonGenerator.writeObject(map);
System.out.println("");
System.out.println("objectMapper");
objectMapper.writeValue(System.out, map);
输出结果:
jsonGenerator
{"account2":{"id":null,"username":"du","password":"1222"},"name":"justin1","account":{"id":1,"username":"justin1","password":"1234"}}
objectMapper
{"account2":{"id":null,"username":"du","password":"1222"},"name":"justin1","account":{"id":1,"username":"justin1","password":"1234"}}
4)Json装Object
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
String json = "{\"id\":1,\"username\":\"justin\",\"password\":\"12345\"}";
try {
Customer newcustomer = objectMapper.readValue(json, Customer.class);
System.out.println(newcustomer.getUsername());
System.out.println(newcustomer.getPassword());
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
输出:
justin
12345
5)Json转对象集合
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = objectMapper.getJsonFactory();
JsonGenerator jsonGenerator = jsonFactory.createJsonGenerator(System.out, JsonEncoding.UTF8);
String json = "[{\"id\":1,\"username\":\"justin\",\"password\":\"12345\"},{\"id\":2,\"username\":\"justin2\",\"password\":\"123456\"}]";
try {
List<LinkedHashMap<String, Object>> customers = objectMapper.readValue(json, List.class);
System.out.println(customers.size());
for (int i = 0; i < customers.size(); i++) {
Map<String, Object> map = customers.get(i);
Set<String> set = map.keySet();
for (Iterator<String> it = set.iterator();it.hasNext();) {
String key = it.next();
System.out.println(key + ":" + map.get(key));
}
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
输出结果:
2
id:1
username:justin
password:12345
id:2
username:justin2
password:123456
总结:
jackson能够非常方便地做对象(对象集合)和json之间的转换,这些例子基本概括了所有的应用情形,欢迎留言交流!