对象转json
User user = new User();
user.setId(12345622L).setName("张三").setSex("男").setStatus(1);
//这里的writerWithDefaultPrettyPrinter方法可以让json格式化更加美观
String s = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);
System.out.println("对象转json: " + s);
json转对象
User user1 = objectMapper.readValue(s, User.class);
System.out.println("json转对象: " + user);
List,Map,ArrayList...集合之间互换
1. 第一种List和json数组之间互相转换
//List集合转json集合对象
List<User> list = new ArrayList<User>();
for (int i = 1; i < 4; i++) {
User u = new User();
u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
list.add(u);
}
String s1 = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(list);
System.out.println("List集合对象转json集合对象: " + s1);
//json集合对象转List集合
JavaType javaType =
objectMapper.getTypeFactory().constructParametricType(List.class, User.class);
List<User> userList = objectMapper.readValue(s1, javaType);
System.out.println("json集合对象转List集合: " + userList.toString());
2.第二种相对第一种比较简单,不用获取JavaType来转换
//List集合转json集合对象
List<User> list = new ArrayList<User>();
for (int i = 1; i < 4; i++) {
User u = new User();
u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
list.add(u);
}
String s1 = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(list);
System.out.println("List集合对象转json集合对象: " + s1);
//集合转json超简单的方式
List<User> userList1 = objectMapper.readValue(s1, new TypeReference<List<User>>() {
});
System.out.println("有手就行的转java集合方法: " + userList1);
3.最后写一个Map集合的转换
//Map集合转json对象
Map<String, User> map = new HashMap<>();
for (int i = 1; i < 4; i++) {
User u = new User();
u.setId(Long.valueOf(i)).setName("张三").setSex("男").setStatus(i);
map.put(String.valueOf(i), u);
}
String maps = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(map);
System.out.println("Map集合转json对象: " + maps);
//json对象转Map集合
MapType mapType = objectMapper.getTypeFactory().constructMapType(HashMap.class, String.class, User.class);
Map<String, User> userMap = objectMapper.readValue(maps, mapType);
System.out.println("json对象转Map集合: " + userMap);
树模型(操作局部的属性和组装json对象)
/**
* 树模型处理json
*
*/
//构建 ObjectNode 添加属性
ObjectNode objectNode = objectMapper.createObjectNode();
objectNode.put("name", "张三");
objectNode.put("status", 1);
objectNode.put("phone", "1767111");
ObjectNode addressNode = objectMapper.createObjectNode();
addressNode.put("zip", "000000");
addressNode.put("street", "Road NanJing");
/**
*设置子节点
* 此处的 address 是 User的一个属性 (private Address address)
* 属性嵌套使用,没有这个需求可以去掉
*/
objectNode.set("address", addressNode);
System.out.println("构建 ObjectNode:\n" + objectNode.toString()); //输出的是json格式
//有两种通过下标获取值
// 1.通过 path 查找节点获取值
String name = objectNode.path("name").asText();
JsonNode address = objectNode.path("address");
System.err.println(address.toString());
String s3 = address.toString();
System.out.println("name=" + name + "," + "address=" + s3);
//2.通过get获取节点key的值
String s2 = objectNode.get("address").get("street").asText();
System.out.println("通过get获取objectNode的值:" + s2);
//读取json,jsonNode相当于的值相当于json字符串
JsonNode jsonNode = objectMapper.readTree(objectNode.toString());
System.out.println("Json 转 JsonNode:\n" + jsonNode);
//JsonNode 转换成 java 对象
User user2 = objectMapper.treeToValue(objectNode, User.class);
System.out.println("JsonNode 转对象:\n" + user2);
//java 对象转换成 JsonNode
JsonNode node = objectMapper.valueToTree(user2);
System.out.println("对象转 JsonNode:\n" + node);
总结:无