當前位置 主頁 > 網站技術 > 代碼類 > 最大化 縮小

    解決fastjson從1.1.41升級到1.2.28后報錯問題詳解(2)

    欄目:代碼類 時間:2020-02-07 18:05

    所以,需要為ViewAwareJsonMessageConverter設置supportedMediaTypes:

    <bean class="cn.com.autodx.common.jsonView.ViewAwareJsonMessageConverter">
      <property name="supportedMediaTypes">
        <list>
          <value>application/json;charset=UTF-8</value>
          <value>application/*+json;charset=UTF-8</value>
        </list>
      </property>
    </bean>

    新版本序列化默認不再對字段進行排序

    這個是一個簽名算法的場景:客戶端對參數進行序列化,然后md5加密成一個簽名;服務端按照相同的算法解析一遍參數,對比簽名值。這里加密依賴json序列化之后的字符串,也就依賴序列化時字段的排序。

    這是fastjson做了一個性能優化,將排序需求抽象出一個SerializerFeature,供用戶自己配置。如果需要排序場景,在序列化時添加參數SerializerFeature.MapSortField即可,即:

    JSON.toJSONString(obj, SerializerFeature.MapSortField);

    官方文檔

    1.2.3之后的版本,Map的序列化沒有做排序再輸出,原因是通過TreeMap排序很影響性能。

    1.2.27版本中增加SerializerFeature.MapSortField實現同樣的功能。

    使用方法如下:

    a) 傳入SerializerFeature.MapSortField參數。 JSON.toJSONString(map, SerializerFeature.MapSortField);

    b) 通過代碼修改全局缺省配置。 JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.MapSortField.getMask();

    c) 通過JVM啟動參數配置修改全局配置 -Dfastjson.serializerFeatures.MapSortField=true

    d) 通過類路徑下的fastjson.properties來配置 fastjson.serializerFeatures.MapSortField=true

    新老版本序列化和反序列化不兼容,會出亂碼。

    更多關于fastjson的相關文章請點擊下面的相關鏈接

    下一篇:沒有了
777亚洲人成视频免费视频