Gradle配置
dependencies {// https://github.com/alibaba/fastjson/issues/2054compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"compile "com.alibaba:fastjson:1.2.73"}
使用方式
class Bean {/*** 处理关键字解析问题*/@JSONField(name = "public")var publicX: String? = null@JSONField(name = "package")var packageX: String? = null}object Test {@JvmStaticfun main(args: Array<String>) {val json = "{\n" +" \"public\":\"123public123\",\n" +" \"package\":\"456package456\"\n" +"}"val bean = JSON.parseObject(json, Bean::class.java)println(bean.packageX) // 123public123println(bean.publicX) // 456package456println(JSON.toJSON(bean)) // {"package":"456package456","public":"123public123"}}}
Retrofit - addConverterFactory
import com.alibaba.fastjson.support.retrofit.Retrofit2ConverterFactory;...Retrofit retrofit = new Retrofit.Builder()....addConverterFactory(Retrofit2ConverterFactory.create()) // 添加Json转换器....build();
容错测试:
// api{"data" : [{"age" : "10","sex" : "1"}]}// result{data: {age: "10",sex: "1"}}
class Bean {var data: List<Temp>? = nullclass Temp {var age: Int? = nullvar sex: Int? = null}}class Bean2 {var data: Temp? = nullclass Temp {var age: Int? = nullvar sex: Int? = null}}
对于 Bean 类来说,使用 api json 数据和使用 result json 数据解析的结果是一样的,不会出错
对于 Bean2 类来说,只有使用 result json 数据才能正清解析数据
结论:Fastjson对于原本按照数组创建的 Bean 类,当 json 数据是单个对象时,进行了容错处理
