由于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自身的问题没时间去细究了。
如果有完美的解决方式请甩上链接~