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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM