gson的SerializedName与枚举类 (根据后台返回数据处理)

示例一:

//后台字段枚举
enum class Day(val type: Int, val desc: String) {

    @SerializedName("1")
    MONDAY(1, "A"),

    @SerializedName("2")
    TUESDAY(2, "B"),

    @SerializedName("3")
    WEDNESDAY(3, "C"),

    @SerializedName("4")
    THURSDAY(4, "D"),

    @SerializedName("5")
    FRIDAY(5, "E"),

    @SerializedName("6")
    SATURDAY(6, "F"),

    @SerializedName("7")
    SUNDAY(7, "G")
}

//后台数据
data class User(
    val name: String? = null,
    val day: Day = Day.FRIDAY
)


//测试
fun main() {
    val gson = Gson()

    var user = User("xq", Day.WEDNESDAY)
    val userWithEnumJson = gson.toJson(user)

    println("生成json===========================================$userWithEnumJson")

    val userJson = "{\"name\":\'xq\',\"day\":5}"
    user = gson.fromJson(userJson, User::class.java)
    println("解析json===========================================${user}")
    println("解析json===========================================${user.day}")
    println("解析json===========================================${user?.day?.type}")
    println("解析json===========================================${user?.day?.desc}")
}
//生成json==========================================={"name":"xq","day":"3"}
//解析json===========================================User(name=xq, day=FRIDAY)
//解析json===========================================FRIDAY
//解析json===========================================5
//解析json===========================================E

示例二:

后台返回的枚举value值多样,我们可以自己定义多个数据

enum class City(val cityId: Int, val cityName: String) {
    A(11, "广州"),
    B(20, "深圳"),
    C(35, "佛山"),
    D(49, "东莞");
}

private val list: List<City> = listOf(
    City.A,
    City.B,
    City.C,
    City.D
)

@Test
fun test4() {
    list.forEach {
        println("${it.cityId}==========================${it.cityName}")
    }
}
@Test
fun test3() {
    val list: List<Map<Int, String>> = listOf(
        mapOf(11 to "广州"),
        mapOf(20 to "深圳"),
        mapOf(35 to "佛山"),
        mapOf(49 to "东莞")
    )

    list.forEach {
        for (en in it.entries) {
            println("${en.key}====================${en.value}")
        }
    }
}
@Test
fun test2() {
    data class StringArrayBean(
        val id: Int,
        val name: String
    )

    val list: List<StringArrayBean> = listOf(
        StringArrayBean(11, "广州"),
        StringArrayBean(20, "深圳"),
        StringArrayBean(35, "佛山"),
        StringArrayBean(49, "东莞")
    )

    list.forEach {
        println("${it.id}========================${it.name}")
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值