편집 한 모든 필드에 저장하는 2 종류, 수 :GSON 또는 모시 : POJO 필드가 어떻게
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 문자열입니다 서버의 문자열. 여기서 포인트는 동적 값을 가질 수 하나 개 이상의 필드가있을 수 있습니다 나는
class Temp1 {
// field1 here
// field2 here
@SerializedName("field3")
val field3Int: Int? = null
@SerializedName("field3")
val field3String: String? = null
}
에게 어떠한 POJO에 그들을 직렬화하는 그런
(이 경우 FIELD3 문자열 또는 INT 될 수 있습니다) 서버에서 보낸 값이 Int
인 경우이 값을 field3Int
으로 설정하고 싶습니다. String
인 경우 field3String
으로 설정하십시오.
동적 인 값을 가질 수있는 필드가있는 다른 POJO가있을 수 있습니다.
Serj에게 감사의 말을 전합니다. 그러나 실제 상황을 보여주기 위해 질문을 편집 한 후에도 TypeAdapter 클래스에서 작동하지 않습니다.
btw. 나는이 같은 Retrofit2 이것을 사용 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