Jackson:工具类 JsonUtils

环境

  1. jdk 7
  2. 4.3.24.RELEASE

源码

package jiangbo.util;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

public final class JsonUtils {

    public static final ObjectMapper JSON_MAPPER = new ObjectMapper();

    /** 如果有不识别的属性,不会报错,只会忽略。 */
    public static final ObjectMapper IGNORE_JSON_MAPPER;

    static {

        IGNORE_JSON_MAPPER = new ObjectMapper();
        IGNORE_JSON_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    }

    /**
     * Constructor<br>
     */
    private JsonUtils() {
    }

    /**
     * 将对象转为 json <br>
     * 
     * @param object {@link Object}
     * @return json 字符串
     */
    public static String toJson(Object object) {

        try {

            return JSON_MAPPER.writeValueAsString(object);
        } catch (JsonProcessingException e) {

            throw new RuntimeException("转换Json出错", e);
        }
    }

    /**
     * 将字符串 json 转为对象<br>
     * 
     * @param <T>     转换后的类型
     * @param content json 字符串
     * @param type    转换后的类型
     * @return 转换后的结果
     */
    public static <T> T fromJson(String content, Class<T> type) {

        return toObject(JSON_MAPPER, content, type);
    }

    /**
     * 将字符串 json 转为对象,将忽略未知的字段<br>
     * 
     * @param <T>     转换后的类型
     * @param content json 字符串
     * @param type    转换后的类型
     * @return 转换后的结果
     */
    public static <T> T fromIgnoreJson(String content, Class<T> type) {

        return toObject(IGNORE_JSON_MAPPER, content, type);
    }

    /**
     * 将字符串 json 转为对象<br>
     * 
     * @param <T>     转换后的类型
     * @param mapper  {@link ObjectMapper}
     * @param content json 字符串
     * @param type    转换后的类型
     * @return 转换后的结果
     */
    private static <T> T toObject(ObjectMapper mapper, String content, Class<T> type) {

        try {

            return mapper.readValue(content, type);

        } catch (IOException e) {

            throw new RuntimeException("json转换出错", e);
        }
    }
}
posted @   jiangbo4444  阅读(1490)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示