EDITED:Gsonまたはモシ:POJOのフィールドが2種類を持つことができ、フィールドのいずれかに保存する方法を
json#1
{
[
{
field1 : ""
field2 : 0
field3 : "Amount not fixed" or field : 250 // this field can be string or int
},
{
field1 : ""
field2 : 0
field3 : "Amount not fixed" or field : 250 // this field can be string or int
}
]
}
json#2
{
field1 : ""
field2 : 0
field3 : "Amount not fixed" or field : 250 // this field can be string or int
}
か、いずれかのJSONができます
ここは私が持っているJSON文字列がありますサーバーからの文字列。ここでのポイントは、その後、私は任意のPOJO
class Temp1 {
// field1 here
// field2 here
@SerializedName("field3")
val field3Int: Int? = null
@SerializedName("field3")
val field3String: String? = null
}
にそれをそれらをデシリアライズしたい1または動的値(この場合のフィールド3は、文字列またはint型可能である)を有することができる複数のフィールド
がある可能性がありますサーバーから送信された値がInt
である場合は、値をfield3Int
に設定することを意味します。 String
の場合はfield3String
に設定します。
動的な値を持つフィールドを持つ他のPOJOが存在する可能性があります。
彼の答えはSerjに感謝しますが、実際の状況を示すために質問を編集した後も、TypeAdapterクラスで問題なく動作します。
Btw。あなたは多型デシリアライズ機能を形成活用できるMoshi
で
val moshi = Moshi.Builder()
.add(MultitypeJsonAdapterAdapter())
.build()
return Retrofit.Builder().baseUrl(baseUrl)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.client(httpClient.build())
.build()
do 'field1'と 'field2'には固定タイプがありますか、それとも動的でもありますか? –
あなたの例でも、 'json#1'は有効なJSONではありません。 –
@ SerjLotutoviciどのフィールドも動的である可能性があります。このpojoでは、その唯一のフィールド3。 – iori24