加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

地产云JsonUtils

发布时间:2020-12-16 18:43:38 所属栏目:百科 来源:网络整理
导读:package com.hikvision.building.cloud.neptune.community.biz.Utils; import java.io.IOException; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.annotation.JsonInclude; import com.fa
package com.hikvision.building.cloud.neptune.community.biz.Utils;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONUtil {

    private static Logger logger = LoggerFactory.getLogger(JSONUtil.class);
    private static ObjectMapper objectMapper = new ObjectMapper();

    static {
        // 排除值为空属性
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        // 转换成对象时,没有属性的处理,忽略掉
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        // 进行缩进输出
        // configure(SerializationFeature.INDENT_OUTPUT,true);
        // 进行日期格式化
        // if (dateFormatPattern != null) {
        // DateFormat dateFormat = new SimpleDateFormat(dateFormatPattern);
        // objectMapper.setDateFormat(dateFormat);
        // }
    }

    /**
     * 将 POJO 对象转为 JSON 字符串
     */
    public static <T> String toJson(T pojo) {
        try {
            return objectMapper.writeValueAsString(pojo);
        } catch (Exception e) {
            logger.error("toJson Failed.",e);
            throw new RuntimeException("转换json格式异常");
        }
    }

    /**
     * 将 JSON 字符串转为 POJO 对象
     */
    public static <T> T fromJson(String json,Class<T> type) {
        try {
            return objectMapper.readValue(json,type);
        } catch (Exception e) {
            logger.error("fromJson Failed.",e);
            throw new RuntimeException("json格式错误" + json);
        }
    }

    /**
     * JSON串转换为Java泛型对象,可以是各种类型,此方法最为强大。用法看测试用例。
     * 
     * @param <T>
     * @param jsonString
     *            JSON字符串
     * @param tr
     *            TypeReference,例如: new TypeReference< List<FamousUser> >(){}
     * @return List对象列表
     */
    public static <T> T toCollection(String jsonStr,TypeReference<T> typeReference) {
        try {
            return objectMapper.readValue(jsonStr,typeReference);
        } catch (Exception e) {
            logger.error("toCollection Failed.",e);
            throw new RuntimeException("json格式错误" + jsonStr);
        }
    }

    public static Map<?,?> json2map(String jsonStr) {
        if (jsonStr == null) {
            throw new RuntimeException("jsonStr is null");
        }
        try {
            return objectMapper.readValue(jsonStr,Map.class);
        } catch (Exception e) {
            logger.error("json2map Failed.",e);
            throw new RuntimeException("json格式错误" + jsonStr);
        }
    }

    public static <T> T map2pojo(Map<?,?> map,Class<T> clazz) {
        return objectMapper.convertValue(map,clazz);
    }

    public static String object2Json(Object obj) {
        if (obj == null) {
            logger.error("obj is null.");
            throw new RuntimeException("入参错误");
        }
        try {
            return objectMapper.writeValueAsString(obj);
        } catch (IOException e) {
            logger.error("object2Json Failed.",e);
            throw new RuntimeException("转换json格式异常");
        }
    }
}

TypeReference<List<Province>> typeReference = new TypeReference<List<Province>>(){}; List<Province> collection = JSONUtil.toCollection(JsonContext,typeReference );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读