zoukankan      html  css  js  c++  java
  • java json转换工具类

    在java项目中,通常会用到json类型的转换,常常需要对 json字符串和对象进行相互转换。

    在制作自定义的json转换类之前,先引入以下依赖

    
    
    <!--json相关工具-->
    <dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-guava</artifactId> <!--google-->
    <version>2.5.3</version>
    </dependency>
    <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
    </dependency>
    <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
    </dependency>
    
    

    自定义json工具类的实现:

    
    
    package com.me.util;

    import lombok.extern.slf4j.Slf4j;
    import org.codehaus.jackson.map.DeserializationConfig;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializationConfig;
    import org.codehaus.jackson.map.annotate.JsonSerialize;
    import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
    import org.codehaus.jackson.type.TypeReference;
    /**
    * json转换
    */
    @Slf4j
    public class JsonMapper {

    private static ObjectMapper objectMapper = new ObjectMapper();
    static {
    // config
    objectMapper.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
    objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,false);
    objectMapper.setFilters(new SimpleFilterProvider().setFailOnUnknownId(false));
    objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY);
    }

    /**
    * 对象转为json字符串
    * @param src
    * @param <T>
    * @return
    */
    public static <T> String obj2String(T src){
    if(src == null){
    return null;
    }
    try{
    return src instanceof String ? (String) src : objectMapper.writeValueAsString(src);
    } catch (Exception e) {
    log.warn("parse object to String exception",e);
    return null;
    }
    }

    /**
    * json字符串转为对象
    * @param src
    * @param typeReference
    * @param <T>
    * @return
    */
    public static <T> T string2Obj(String src, TypeReference<T> typeReference) {
    if (src == null || typeReference == null) {
    return null;
    }
    try {
    return (T) (typeReference.getType().equals(String.class) ? src : objectMapper.readValue(src, typeReference));
    } catch (Exception e) {
    log.warn("parse String to Object exception, String:{}, TypeReference<T>:{}, error:{}", src, typeReference.getType(), e);
    return null;
    }
    }

    }

    使用:

    JSON串转为list类型

    对象类型转为JSON串

     

  • 相关阅读:
    手机游戏开发中如何选择适合的纹理格式
    站在巨具的肩膀上:使用现有工具搭建自己的工作流
    游戏引擎不仅是代码,更多的是完善的工具
    Android下/data/data/<package_name>/files读写权限
    Unity3D中灵活绘制进度条
    为什么X86汇编中的mov指令不支持内存到内存的寻址?
    【吐血推荐】简要分析unity3d中剪不断理还乱的yield
    解释型语言和编译型语言如何交互?以lua和c为例
    char,wchar_t,WCHAR,TCHAR,ACHAR的区别----LPCTSTR
    游戏关卡是酱紫加载的,你造吗?
  • 原文地址:https://www.cnblogs.com/devise/p/9974659.html
Copyright © 2011-2022 走看看