Android jackson json:在一个@JsonProperty

时间:2018-08-07 02:16:29

标签: android json kotlin jackson json-deserialization

我修改了以下代码的解决方案,但仍然遇到问题。谁能为我提供我所缺少的建议?非常感谢您的帮助。

过去几天,我一直在这里搜索,并尝试了不同的解决方案,但都没有一个适合我,因此我决定自己注册并提出问题。

这是怎么回事: 我的项目中的json属性可以基于api版本具有两种数据类型。它可以是一个字符串或一对键值对。 我如何允许我的@JsonProperty(“ field_with_two_possible_types”)具有两种可能的类型并正确解析它们?

这是我的主数据类的样子:

@PaperParcel
data class DataClass(

        @JsonProperty(“field_with_two_possible_types”)
        val symptomTime: FieldPOJO? = null,) : PaperParcelable {
    companion object {
        @JvmField
        val CREATOR = PaperParcelDataClass.CREATOR
    }
}

POJO Class

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type.id")
@JsonSubTypes(
JsonSubTypes.Type(name = “string_value”, value = String::class),
JsonSubTypes.Type(name = “object_value”, value = FieldSubPOJO::class))

class FieldPOJO() : Parcelable {

    var value1: String? = null

    var value2: FieldSubPOJO? = null

    constructor(parcel: Parcel) : this() {
        value1 = parcel.readString()
        value2 = parcel.readParcelable(FieldSubPOJO::class.java.classLoader)
    }

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(value1)
        parcel.writeParcelable(va;ie2, flags)
    }

    override fun describeContents(): Int {
        return 0
    }

    companion object CREATOR : Parcelable.Creator<FieldPOJO> {
        override fun createFromParcel(parcel: Parcel): FieldPOJO {
            return FieldPOJO(parcel)
        }

        override fun newArray(size: Int): Array<FieldPOJO?> {
            return arrayOfNulls(size)
        }
    }
}

0 个答案:

没有答案