上一篇文章中,提到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
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之间的转换,这些例子基本概括了所有的应用情形,欢迎留言交流!