fastxml 的 jackson helper类,便于json转换

2021-12-07 20:59:09 浏览数 (2)

发表于2017-06-302019-01-01 作者 wind

代码语言:javascript复制
/*
 * Copyright (c) 2017 西安才多信息技术有限责任公司。
 * 项目名称:dev
 * 文件名称:JsonObjectUtils.java
 * 日期:17-6-30 上午8:58
 * 作者:yangyan
 *
 */

package cn.firegod.common.utils.json;

import cn.firegod.codegen.bean.ColumnMeta;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;


import java.io.IOException;
import java.util.List;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

public class JsonObjectUtils {
    public static ObjectMapper m = new ObjectMapper();

    static {
        // 此配置的作用为当使用此工具将json中的属性还原到bean时,如果有bean中没有的属性,是否报错
        m.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
    }

    /**
     * json 转换成 bean
     *
     * @param <T>
     * @param json
     * @param clazz
     * @return
     */
    public static <T> T jsonToBean(String json, Class<T> clazz) {
        if (json == null || clazz == null) {
            return null;
        }
        try {
            return m.readValue(json, clazz);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * json node 转换成bean
     *
     * @param node
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T nodeToBean(JsonNode node, Class<T> clazz) {
        if (node == null || clazz == null) {
            return null;
        }
        try {
            return m.treeToValue(node,clazz);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * bean 转换成 json
     *
     * @param bean
     * @return
     */
    public static String beanToJson(Object bean) {

        if (bean == null) {
            return null;
        }
        try {
            return m.writeValueAsString(bean);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static JsonNode stringToJsonNode(String jsonString) {
        if (jsonString == null) {
            return null;
        }
        try {
            return m.readTree(jsonString);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


    public static <T, A extends List<T>> A jsonToList(String jsonString, TypeReference<List<ColumnMeta>> clazz) throws JsonParseException, JsonMappingException, IOException {
        return (A) m.readValue(jsonString, clazz);
    }

}

0 人点赞