zoukankan      html  css  js  c++  java
  • jackson替换fastjson

    最近fastjson频繁爆出漏洞,项目组决定将项目中的fastjson全部替换成jackson,该篇博客记录替换的过程:

    可以定义一个JacksonUtil,里面包含几个函数:

    1.序列化函数

    原先:fastjson-JSON.toJSONString

    替换:jackson-JacksonUtil.beanToJsonStr(Object object)

    主要实现:ObjectMapper().writeValueAsString(object)

    2.反序列化

    原先:fastjson-JSONObject.parseObject

    替换:jackson-JacksonUtil.jsonStrToBean(String str, Class<T> targetClass)

    主要实现:ObjectMapper().readValue(str, targetClass)

    3.属性定义和序列化和反序列化顺序

    原先:fastjson-@JSONFiled(name = "xxx", ordinal = 2)

    替换:jackson-@JsonProperty(value = "xxx", index = 2)

    4.JSONObject

    可以替换为Map<String, Object>

    5.JSONArray

    可以替换为List<Object>

    6.map<String, Long>类型序列化和反序列化

    fastjson可以利用TypeReference 复杂类型转换,比如

    JSON.parseObject(getNotifyRule(), new TypeReference<Map<String, Long>>()

    但是用Jackson,JackUtil.jsonStrToBean(getNotifyRule(), Map.class);转换的时候,不能直接解析为Long,而是Integer

    参考链接:

    https://blog.csdn.net/zzti_erlie/article/details/79779253

    https://www.cnblogs.com/larva-zhh/p/11544317.html#@jsonfield

    https://baijiahao.baidu.com/s?id=1668639549525572630&wfr=spider&for=pc

    https://www.cnblogs.com/jpfss/p/9056485.html

    https://blog.csdn.net/GarfieldEr007/article/details/83829722

  • 相关阅读:
    增强MyEclipse提示功能
    Mysql安装配置,修改初试密码。
    在我的电脑里面创建图标
    popup non topmost
    多线程下载或上传数据限速
    SynchronizationContext
    linux运维笔记——常用命令详解diff
    linux运维笔记——curl
    linux下mysql的源码安装
    shell编程——变量的数值计算
  • 原文地址:https://www.cnblogs.com/fxl-njfu/p/13136034.html
Copyright © 2011-2022 走看看