ObjectMapper 对象,字符串,Map 之间的相互转换
一、objectMapper
https://blog.csdn.net/han1196639488/article/details/79358743
二、JsonNode、JsonObject常用方法
https://blog.csdn.net/mst1010/article/details/78589059
三、Json 和 JsonNode 区别 和 转换
https://blog.csdn.net/luhanqiang/article/details/65937951
四、JsonObject 和 ObjectMapper
https://blog.csdn.net/u011983111/article/details/81389617
五、最多用的
https://blog.csdn.net/qq_39938758/article/details/79296461
相关jar
com.fasterxml.jackson.core
jackson-databind
2.9.9.3
package com.kyexpress.json.json;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.kyexpress.json.model.User;
public class ObjectMapperUtil {
private static ObjectMapper objectMapper;
static {
objectMapper = new ObjectMapper();
// 转换为格式化的json
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
// 如果json中有新增的字段并且是实体类类中不存在的,不报错
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
// josn 2 object
public static void object2Json() throws Exception {
User user = new User();
user.setAddress("深圳");
user.setDataTime("2019-05-08 16:44:33");
user.setId("1");
user.setPasswd("admin123");
user.setUserName("admin");
System.out.println("object2Json:" + objectMapper.writeValueAsString(user));
}
// list 2 json
public static void list2Json() throws Exception {
List<User> users = new ArrayList<User>();
User user = null;
for (int i = 1; i < 5; i++) {
user = new User();
user.setAddress("深圳-" + i);
user.setDataTime("2019-05-08 16:44:33");
user.setId("1-" + i);
user.setPasswd("admin123-" + i);
user.setUserName("admin-" + i);
users.add(user);
}
System.out.println("list2Json:" + objectMapper.writeValueAsString(users));
List<User> users2 = objectMapper.readValue(objectMapper.writeValueAsString(users), List.class);
System.out.println("json2list:" + users2.get(0));
String u = objectMapper.writeValueAsString(users2.get(0));
System.out.println("data:" + u);
User use = objectMapper.readValue(u, User.class);
System.out.println(use.getAddress());
}
// string 2 object
public static void string2Object() throws Exception {
String data = "{\"id\" : \"1\", \"userName\" : \"admin\",\"passwd\" : \"admin123\", \"address\" : \"深圳\", \"dataTime\" : \"2019-05-08 16:44:33\"}";
User use = objectMapper.readValue(data, User.class);
System.out.println(use.getDataTime());
}
// map to json
public static void map2Json() throws Exception {
Map<String, Object> testMap = new HashMap<String, Object>();
testMap.put("name", "merry");
testMap.put("age", 30);
testMap.put("date", new Date());
System.out.println("map2Json:" + objectMapper.writeValueAsString(testMap));
Map<String, Object> testMapDes = objectMapper.readValue(objectMapper.writeValueAsString(testMap), Map.class);
System.out.println(testMapDes.get("age"));
}
// 日期字段转换
public static void dataFormat() throws Exception {
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM"));
User user = new User("1", "admin", new Date());
String jsonStr = objectMapper.writeValueAsString(user);
System.out.println("对象转为字符串:" + jsonStr);
}
// json字符串转换为jsonNode
public static void json2JsonNode() throws Exception {
String data = "{\"id\" : \"1\", \"userName\" : \"admin\",\"passwd\" : \"admin123\", \"address\" : \"深圳\", \"dataTime\" : \"2019-05-08 16:44:33\"}";
JsonNode rootNode = objectMapper.readTree(data);
System.out.println(rootNode.get("userName").asText());
}
public static void main(String[] args) throws Exception {
json2JsonNode();
}
}