Jackson-ObjectMapper专题分享【ObjectMapper 对象,字符串,Map 之间的相互转换】

赵晨
2023-12-01

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

}

 类似资料: