Отдельная сериализация ключа и значения в JSON (com.google.code.gson)

Есть вот такой JSON:

{"18797":{"city":"Moscow","street":"Tverskaya","home":"3"},...}

И вот такой класс:

import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName

class NewAddress 
{
    @????
    val addr_id = 0

    @SerializedName("city")
    @Expose
    val city:   String = ""

    @SerializedName("street")
    @Expose
    val street: String = ""

    @SerializedName("home")
    @Expose
    val home:   String = ""
}

Как я могу десериализовать ключ в общем JSON, чтобы он ложился в addr_id моего класса?


Ответы (1 шт):

Автор решения: zTrap

В данном случае ваш addr_id является полем, внутри другого объекта. Сам json составлен неправильно, и единственный способ распарсить его это - парсинг в Map<String, NewAddress>.

В вашем случае эта часть будет ключём

{"18797":{"city":"Moscow","street":"Tverskaya","home":"3"},...}
 ^^^^^^^

А эта значением

{"18797":{"city":"Moscow","street":"Tverskaya","home":"3"},...}
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
→ Ссылка