zoukankan      html  css  js  c++  java
  • jackson fastjson 对比 小计

    狭义序列化: 序列化 bean to json 反序列化 json to bean 

    别名

    关于反序列化标记别名给bean赋值

    jackson

    @JsonAlias({"xxx","xxxx"})
    

    fastjson

     在fast json中功能设置大多在JSONField 中

    @JSONField(alternateNames = {"xx", "xxxx"})
    

    字段名称

    jackson

    @JsonProperty("xxx")

    fastjson

    @JSONField(name="xx")
    

    日期格式

    jackson

    @JsonFormat(timezone = "GMT+8", pattern = "yyyyMMdd")
    

    fastjson

    @JSONField(format="yyyyMMdd")
    

    未知属性接序列和反序列

    jackson

    用一个map装 下面的注解放在get set方法上
    @JsonAnyGetter
    @JsonAnySetter
    

    fastjson

    get方法
     @JSONField(name = "_any", unwrapped = true, serialize = true, deserialize = false)
    set方法
     @JSONField(name = "_any", unwrapped = true, serialize = false, deserialize = false)
    
    

    忽略字段

    jackson

    忽略
    @JsonIgnore
    如果为null 就不序列化
    @JsonInclude(JsonInclude.Include.NON_NULL)
    

    fastjson

    忽略
    @JSONField(deserialize=false)
    fastjson是默认忽略为null的值,在转string可以设置保留null 
    String bodyStr=JSONObject.toJSONString(body, SerializerFeature.WriteMapNullValue);
    

    节点操作

    fastjson
    可使用快捷操作类 JSON

    JSON  快速序列化与反序列化
    树的节点
    JsonObject 本质为map 代表json中的bean节点
    JsonArray 本质为List<JsonObject> 代表json中的array节点
    

    jackson

    需要实例化一个ObjectMapper再进行序列化操作

    ObjectMapper mapper = new ObjectMapper();  
    mapper.readValue() 反序列
    objectMapper.writeValueAsString() 序列
    树的节点 
    JsonNode 代表一个json中的节点 不可变
    ObjectNode 代表一个bean的节点 JsonNode子类 通用做法创建一个空的bean再把jsonNode放进去
    ArrayNode 代表一个数组节点
    也可强转使用Node
    

    jackson的节点操作有点别扭

    JsonPath 节点查询

    jackson可使用Jayway JsonPath操作
    fastjson可直接使用jsonpath

    操作基本相同

    参考资料

    https://www.iflym.com/index.php/code/202103220001.html
    https://www.w3cschool.cn/fastjson/fastjson-jsonfield.html
    https://blog.csdn.net/wangmx1993328/article/details/88598625

  • 相关阅读:
    登录注册页面切换
    LINUX系统日常使用命令
    find命令详解
    ssh命令详解
    tar命令详解
    route命令详解
    uname命令详解
    ps命令详解
    df命令详解
    virsh命令详解
  • 原文地址:https://www.cnblogs.com/funkboy/p/15207205.html
Copyright © 2011-2022 走看看