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

文章介绍了如何在Java中使用JsonUtils工具类进行对象到JSON字符串的转换,包括使用ObjectMapper、JsonFactory和定制化配置。还提到如何将Map转换为Spring请求体并发送。
摘要由CSDN通过智能技术生成

工作中经常需要对象转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;
    }
}
-------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值