贷款织梦网站模版,最近国际重大新闻事件2022,广州新站优化,广告设计公司英文介绍一、解决将Long型转化为科学计数法的问题
1.1 场景 将一个对象转为Map类型时#xff0c;调用Gson.fromJson发现#xff0c;原来对象中的long类型的personId字段#xff0c;被解析成了科学计数法#xff0c;导致请求接口失败#xff0c;报参数错误。 解决结果图 1.2、Exa…一、解决将Long型转化为科学计数法的问题
1.1 场景 将一个对象转为Map类型时调用Gson.fromJson发现原来对象中的long类型的personId字段被解析成了科学计数法导致请求接口失败报参数错误。 解决结果图 1.2、ExampleUnitTest.kt示例代码
data class ReuestParmObj(val personId: Long 1668394335647, val personType: Int 1)
class ExampleUnitTest {private val mGson: Gson Gson()Testfun gsonReuestParmJson() {val reuestParmObj ReuestParmObj(1668394335647, 1)val reuestParmJson: String mGson.toJson(reuestParmObj)println(reuestParmJson信息$reuestParmJson)val mapParm: MapString, * mGson.fromJson(reuestParmJson, Map::class.java) as MapString, *println(mapParms信息$mapParm)}
}测试结果 1.3 解决将Long型转化为科学计数法问题的方案 修改gson配置 private val mGson: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).create() data class ReuestParmObj(val personId: Long 1668394335647, val personType: Int 1)
class ExampleUnitTest {
// private val mGson: Gson Gson()private val mGson: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).create()Testfun gsonReuestParmJson() {val reuestParmObj ReuestParmObj(1668394335647, 1)val reuestParmJson: String mGson.toJson(reuestParmObj)println(reuestParmJson信息$reuestParmJson)val mapParm: MapString, * mGson.fromJson(reuestParmJson, Map::class.java) as MapString, *println(mapParms信息$mapParm)}
}测试结果 二、 把null值也转换默认是不转换null值的 设置serializeNulls() private val mGson: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).serializeNulls().create()三、Html的转换 Gson默认是把Html 转义的但也可以设置不转义。 设置disableHtmlEscaping() class ExampleUnitTest {Testfun testDisableHtmlEscaping(){val gson1: Gson Gson()val gson2: Gson GsonBuilder().disableHtmlEscaping().create()val htmlStr h3测试disableHtmlEscaping/h3println(未设置disableHtmlEscaping转换htmlStr结果${gson1.toJson(htmlStr)})println(设置disableHtmlEscaping转换htmlStr结果${gson2.toJson(htmlStr)})}
}测试结果 四、设置输入json格式 默认的输出是compact格式示例 {personId:1668394335647,personType:1} 设置setPrettyPrinting class ExampleUnitTest {Testfun testSetPrettyPrinting(){val gson1: Gson Gson()val gson2: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).setPrettyPrinting().create()val reuestParmObj ReuestParmObj(1668394335647, 1)println(未设置 setPrettyPrinting 转换reuestParmObj结果${gson1.toJson(reuestParmObj)})println(设置 setPrettyPrinting 转换reuestParmObj结果${gson2.toJson(reuestParmObj)})}
}测试结果 五、ExampleUnitTest.kt文件完整代码
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.LongSerializationPolicy
import com.google.gson.reflect.TypeToken
import org.junit.Test/*** Example local unit test, which will execute on the development machine (host).** See [testing documentation](http://d.android.com/tools/testing).*/data class ReuestParmObj(val personId: Long 1668394335647, val personType: Int 1)
class ExampleUnitTest {private val mGson1: Gson Gson()private val mGson2: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).serializeNulls().disableHtmlEscaping().create()Testfun gsonReuestParmJson() {val reuestParmObj ReuestParmObj(1668394335647, 1)val reuestParmJson1: String mGson1.toJson(reuestParmObj)val reuestParmJson2: String mGson2.toJson(reuestParmObj)println(reuestParmJson1 信息$reuestParmJson1)println(reuestParmJson2 信息$reuestParmJson2)// val type object : TypeTokenMapString, *() {}.type
// val mapParm: MapString, * mGson1.fromJson(reuestParmJson, type)val mapParm1: MapString, * mGson1.fromJson(reuestParmJson1, Map::class.java) as MapString, *println(mapParm1 信息$mapParm1)val mapParm2: MapString, * mGson2.fromJson(reuestParmJson2, Map::class.java) as MapString, *println(mapParms2 信息$mapParm2)/*reuestParmJson1 信息{personId:1668394335647,personType:1}reuestParmJson2 信息{personId:1668394335647,personType:1}mapParm1 信息{personId1.668394335647E12, personType1.0}mapParms2 信息{personId1668394335647, personType1.0}*/}Testfun testDisableHtmlEscaping() {val gson1: Gson Gson()val gson2: Gson GsonBuilder().disableHtmlEscaping().create()val htmlStr h3测试disableHtmlEscaping/h3println(未设置disableHtmlEscaping转换htmlStr结果${gson1.toJson(htmlStr)})println(设置disableHtmlEscaping转换htmlStr结果${gson2.toJson(htmlStr)})/*未设置disableHtmlEscaping转换htmlStr结果\u003ch3\u003e测试disableHtmlEscaping\u003c/h3\u003e设置disableHtmlEscaping转换htmlStr结果h3测试disableHtmlEscaping/h3*/}Testfun testSetPrettyPrinting() {val gson1: Gson Gson()val gson2: Gson GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).setPrettyPrinting().create()val reuestParmObj ReuestParmObj(1668394335647, 1)println(未设置 setPrettyPrinting 转换reuestParmObj结果${gson1.toJson(reuestParmObj)})println(设置 setPrettyPrinting 转换reuestParmObj结果${gson2.toJson(reuestParmObj)})/*未设置 setPrettyPrinting 转换reuestParmObj结果{personId:1668394335647,personType:1}设置 setPrettyPrinting 转换reuestParmObj结果{personId: 1668394335647,personType: 1}*/}
}