美文网首页
Dev-009、jackson通用工具类

Dev-009、jackson通用工具类

作者: Docker_Compose | 来源:发表于2022-05-24 17:19 被阅读0次

1、通用工具类

@Slf4j
@Component
public class JacksonUtils{
    private final ObjectMapper mapper = new ObjectMapper();

    /**
     * json字符串转成list
     *
     * @param jsonString
     * @param cls
     * @return
     */
    public <T> List<T> jsonToList(@NonNull String jsonString, Class<T> cls) {
        try {
            return mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false).readValue(jsonString, getCollectionType(List.class, cls));
        } catch (JsonProcessingException e) {
            String className = cls.getSimpleName();
            log.error(" parse json {} to class {} error:{}", jsonString, className, e.getMessage());
        }
        return null;
    }

    /**
     *  json字符串转成 java对象
     * @param jsonString
     * @param cls
     * @param <T>
     * @return
     */
    public <T> T jsonToJava(@NonNull String jsonString, Class<T> cls){
        try {
            return mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false).readValue(jsonString,cls);
        } catch (JsonProcessingException e) {
            String className = cls.getSimpleName();
            log.error(" parse json {} to class {} error:{}", jsonString, className,  e.getMessage());
        }
        return null;
    }

    /**
     *  java对象转成 json字符串
     * @param cls
     * @return
     */
    public <T> String javaToJson(@NonNull T cls){
        try {
            return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(cls);
        } catch (JsonProcessingException e) {
            log.error(" parse class {} to json error:{}", cls, e.getMessage());
        }
        return null;
    }

    /**
     * 获取泛型的Collection Type
     *
     * @param collectionClass 泛型的Collection
     * @param elementClasses  实体bean
     * @return JavaType Java类型
     */
    private  JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
        return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }
}



2、 解决JSON中存在大字字母而造成反序列化失败问题

@Data
public class ParmsVo implements Serializable{

    private static final long serialVersionUID = 1L;

    @JsonProperty("Value")
    private T value;

    @JsonProperty("Type")
    private int type;

    @JsonProperty("Name")
    private String name;
}

@JsonProperty:用于实体类的属性上,在反序列化的时候给属性重命名

相关文章

  • Dev-009、jackson通用工具类

    1、通用工具类 2、 解决JSON中存在大字字母而造成反序列化失败问题 @JsonProperty:用于实体类的属...

  • 相关工具类

    校验工具 -- validator ---> BeanValidator类 Json转换工具 -- jackson...

  • Javascript通用工具类

    Json工具类,处理所有Json相关的通用方法。 数字计算工具类 颜色工具类 日期工具类 字符串工具类

  • SpringBoot 序列化器注解使用方法

    Json解析工具Jackson @JsonIgnoreProperties此注解是类注解,作用是json序列化时将...

  • 03-Arrays、Collections、Objects 常用

    注:源码系列文章主要是对某付费专栏的总结记录。如有侵权,请联系删除。 1 工具类通用的特征 工具类通用的特征写法:...

  • Java常用类

    一、工具类的设计 一般的,把很多完成通用功能的方法分类存放到类中,这些类就叫工具类。 工具类起名:XxxUtil、...

  • 解析xml的工具类 -----jackson

    参考资料:https://github.com/FasterXML/jackson-dataformat-xml[...

  • 开发常用命名

    类CommonUtils:通用工具类CommandBase:服务器请求指令类 方法Unit()~Unit() In...

  • jackson的简单使用

    jackson是一款通用的json序列化和反序列化的类库。json是一种通用的数据传输格式,和xml一样,xml也...

  • Java常用类知识预热

    1. 工具类的设计 一般的,把很多完成通用功能的方法分类存放到类中,这些类就叫工具类。 工具类起名:XxxUtil...

网友评论

      本文标题:Dev-009、jackson通用工具类

      本文链接:https://www.haomeiwen.com/subject/pfzjprtx.html