使用 Jackson 解析 JSON、ObjectMapper解析 JSON、ObjectMapper实现对象转json、Jackson 实现对象转json

2023-12-13 15:51:29

工作中经常需要对象转json,json转对象来实现数据的接受或发送,下面是个人使用的工具类:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.wanmagroup.haikang.constants.Constants;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Map;

public class JsonUtils {

? ? public static String ctreteJsonString(String key, Object obj) {
? ? ? ? try {
? ? ? ? ? ? // 使用封装的 ObjectMapper 创建 JSON 对象
? ? ? ? ? ? ObjectMapper objectMapper = createObjectMapper();
? ? ? ? ? ? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? ? ? objectMapper.setDateFormat(dateFormat);

? ? ? ? ? ? // 使用封装的 JSON 工厂创建 JSON 生成器
? ? ? ? ? ? JsonFactory jsonFactory = createJsonFactory();
? ? ? ? ? ? JsonGenerator jsonGenerator = jsonFactory.createGenerator(System.out, JsonEncoding.UTF8);

? ? ? ? ? ? // 创建一个 JSON 对象节点
? ? ? ? ? ? ObjectNode rootNode = createJsonNode(key, obj);

? ? ? ? ? ? // 使用 JSON 生成器将 JSON 对象写入输出流
? ? ? ? ? ? objectMapper.writeTree(jsonGenerator, rootNode);

? ? ? ? ? ? // 完成后关闭生成器
? ? ? ? ? ? jsonGenerator.close();

? ? ? ? ? ? // 将 JSON 对象转换为字符串
? ? ? ? ? ? String userInfoJson = objectMapper.writeValueAsString(rootNode);
? ? ? ? ? ? System.out.println(userInfoJson);
? ? ? ? ? ? return userInfoJson;
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? // 处理异常,可以打印错误日志或者采取其他必要的操作
? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? return null; // 或者返回适当的错误信息
? ? ? ? }
? ? }

? ? public static ObjectMapper createObjectMapper() {
? ? ? ? ObjectMapper objectMapper = new ObjectMapper();
? ? ? ? // 如果需要排除空字段
? ? ? ? objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
? ? ? ? // 如果需要排除空字段
? ? ? ? objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
? ? ? ? objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
? ? ? ? return objectMapper;
? ? }

? ? public static ObjectMapper createObjectMapperAll() {
? ? ? ? ObjectMapper objectMapper = new ObjectMapper();
? ? ? ? // 如果需要排除空字段
? ? ? ? objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
? ? ? ? // 如果需要排除空字段
? ? ? ? objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
? ? ? ? objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
? ? ? ? //configure() 方法忽略掉“无法识别”的字段
? ? ? ? objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
? ? ? ? // 忽略值为默认值的属性
? ? ? ? objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_DEFAULT);
? ? ? ? // 接受不区分大小写的属性
? ? ? ? objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

? ? ? ? return objectMapper;
? ? }

? ? // 封装 JSON 工厂配置的方法
? ? public static JsonFactory createJsonFactory() {
? ? ? ? JsonFactory jsonFactory = new JsonFactory();
? ? ? ? jsonFactory.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);
? ? ? ? jsonFactory.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);
? ? ? ? return jsonFactory;
? ? }

? ? // 创建包含指定键的 JSON 对象节点
? ? public static <T> ObjectNode createJsonNode(String key, T object) {
? ? ? ? ObjectMapper objectMapper = createObjectMapper();
? ? ? ? ObjectNode rootNode = objectMapper.createObjectNode();
? ? ? ? rootNode.putPOJO(key, object);
? ? ? ? return rootNode;
? ? }

? ? //map转spring,组成请求体拼接url即可发送
? ? public static String jsonRequest(Map<String,Object>map){
? ? ? ? ObjectMapper objectMapper =JsonUtils.createObjectMapper();

? ? ? ? String jsonRequest = "";
? ? ? ? try {
? ? ? ? ? ? jsonRequest = objectMapper.writeValueAsString(map);
? ? ? ? } catch (JsonProcessingException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? System.out.println(jsonRequest);
? ? ? ? return jsonRequest;
? ? }
}
-------------

文章来源:https://blog.csdn.net/my_futrue/article/details/134836459
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。