观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

前言

  gson是Json解析框架,下面介绍kotlin的形式使用gson

依赖

  implementation 'com.google.code.gson:gson:2.9.0'

实体类解析成字符串

 

val applyBean = ApplyBean("app", 1, "xxx.xx.xx")
val gson = GsonBuilder().create()
val jsonString = gson.toJson(gson) //可以选择放入jsonObject val jsonObject = JSONObject(jsonString)

 

字符串解析成实体类

 

val applyBeanString = "{ \"name\": \"aa\",\"icon\": 1,\"packageName\": \"xxxx\" }"
val gson = GsonBuilder().create()
val applyBean = gson.fromJson<ApplyBean>(applyBeanString, ApplyBean::class.java)

 

JsonArray字符串解析成实体类集合

        val jsonString = mSP.getString(key, "")
        if (jsonString.isNullOrEmpty()) {
            return mutableListOf()
        }
        val type = object : TypeToken<MutableList<ApplyBean>>() {}.type
        return mGson.fromJson(jsonString, type)

实体类集合解析成JsonArray字符串

        val list = mutableListOf<ApplyBean>()
        mGson.toJson(list)

指定字段不参与序列号与反序列化

关键字 @Transient 如果是java 直接在字段类型前面写写 transient 

data class ApplyBean(var name: String?,
                     @Transient
                     var icon: Drawable?,
                     var packageName: String?)

@SerializedName指定key的名称 

/**
 * 帮助列表的item数据
 */
data class HelpBean(val id: Int,
                    /**
                     * 问题分类名称
                     */
                    @SerializedName("category_name") val categoryName: String,
                    /**
                     * 问题分类key
                     */
                    @SerializedName("category_key") val categoryKey: String,
                    /**
                     * 排序
                     */
                    val sort: Int
)

下划线转驼峰

//下划线转驼峰gson
val gsonUnderline2Hump = GsonBuilder()
    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
    .create()

 

End

posted on 2022-04-06 20:17  观心静  阅读(184)  评论(0)    收藏  举报