由於Gson轉換導致int轉換成double的問題,使用fastjson替代
- 2019 年 10 月 5 日
- 筆記
Gson將map轉為json,如果map里有Integer值,那麼會將Integer轉為Double
用了幾種方式嘗試解決無效,得知後台是用的fastjson,於是使用fastjson替代。
因為很多地方都是使用的是Gson,所以只處理了有影響的地方。
使用 fastjson
導入依賴
implementation 'com.alibaba:fastjson:1.2.9'
混淆
# fastjson -dontwarn com.alibaba.fastjson.** -keep class com.alibaba.fastjson.**{*;} # 忽略泛型 -keepattributes Signature #保持所有實現 Serializable 介面的類成員 #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; !private <fields>; !private <methods>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); }
打release包時出現了OOM,在gradle.properties里加上:
# 增加記憶體分配大小 org.gradle.jvmargs=-Xmx1024m
使用
將map轉為json:JSON.toJSONString(resultMap)
使用後就好了。。怎麼解決Gson自身的問題沒時間去細究了。
如果有完美的解決方式請甩上鏈接~
