Jackson的基本用法
Jackson 最常用的 API 就是基于"对象绑定" 的 ObjectMapper。下面是一个 ObjectMapper 的使用的简单示例。
利用Lombok创建一个简单类
@Data @AllArgsConstructor @NoArgsConstructor public class MyGirl{ private String name; private int age; }
使用Jackson来将POJO写为JOSN字符串或者JOSN文件,
使用Jackson来将JOSN串或文件转变为POJO对象。
ObjectMapper mapper = new ObjectMapper(); MyGirl myGirl = new MyGirl ("quanzixian", 25); // 写为字符串 String text = mapper.writeValueAsString(myGirl ); // 写为文件 mapper.writeValue(new File("myGirl .json"), myGirl ); // 写为字节流 byte[] bytes = mapper.writeValueAsBytes(myGirl ); System.out.println(text); // 从字符串中读取 MyGirl myNewGirl= mapper.readValue(text, MyGirl.class); // 从字节流中读取 myNewGirl = mapper.readValue(bytes, MyGirl.class); // 从文件中读取 myNewGirl= mapper.readValue(new File("myGirl.json"), MyGirl.class); System.out.println(myNewGirl);
集合的映射
除了使用Java类进行映射之外,我们还可以直接使用Map和List等Java集合组织JSON数据,在需要的时候可以使用readTree方法直接读取JSON中的某个属性值。需要注意的是从JSON转换为Map对象的时候,由于Java的类型擦除,所以类型需要我们手动用new TypeReference<T>给出。
ObjectMapper mapper = new ObjectMapper(); Map<String, Object> map = new HashMap<>(); map.put("age", 25); map.put("name", "quanzhixian"); map.put("interests", new String[]{"pc games", "music"}); String text = mapper.writeValueAsString(map); System.out.println(text); Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>() { }); System.out.println(map2); JsonNode root = mapper.readTree(text); String name = root.get("name").asText(); int age = root.get("age").asInt(); System.out.println("name:" + name + " age:" + age);

浙公网安备 33010602011771号