Jackson - Java序列化与反序列化框架

来源:互联网 发布:学好英语的软件 编辑:程序博客网 时间:2024/06/06 15:04

上一篇文章中,提到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"}]ObjectMapper21###[{"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();}

输出:

justin12345

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();}

输出结果:

2id:1username:justinpassword:12345id:2username:justin2password:123456
总结:

jackson能够非常方便地做对象(对象集合)和json之间的转换,这些例子基本概括了所有的应用情形,欢迎留言交流!







0 0
原创粉丝点击