Я хочу создать модель из JSON
, где ключ - это значение. Это является точным описанием проблемы, но в iOS
. Я хочу подобное решение в Android. По сути, я хочу иметь декодируемый эквивалент в Android.
Я использую GSON
для анализа JSON
для моделирования. На данный момент я сравнил ключ JSON (упомянутый в ссылке) со статическими значениями.
JSON :
{
"rows" :
[
{
"_id": "5cdc0ede5c3dcb04bdb3a972",
"emp_code": 187,
"log_id": 361711,
"punch_time": "2019-05-07T04:00:33.000Z",
"pin_type": 1,
"status": 4,
"__v": 0
},
{
"_id": "5cdc40de5c3dcb04bdb3a972",
"emp_code": 111,
"log_id": 361701,
"punch_time": "2019-05-07T04:00:35.000Z",
"pin_type": 101,
"status": 4,
"__v": 0
}
],
"pin_type_text": {
"1": "In Fingerprint",
"4": "In Card",
"101": "Out Fingerprint",
"104": "Out Card"
}
}
Значение pin_type в каждой строке относится к записи в pin_type_text , сопоставленной с ее ключом.
Я использую GSON для создания моделей, а вот класс моделей:
class MyModel {
var length : Long = 0
var rows = ArrayList<Rows>()
var pin_type_text : String = ""
}
class PinTypeText {
var 1 : String = ""
var 4 : String = ""
var 101 : String = ""
var 104 : String = ""
}
По сути, ключи, определенные в классе PinTypeText, являются значениями ключа 'pin_type', полученного в модели Rows, как видно из общего ресурса JSON. Таким образом, в этом случае ключи в PinTypeText зависят от значений, определенных в строках. Следовательно, я хочу, чтобы модель 'PinTypeText' создавалась относительно значений 'pin_type' из модели 'Rows'.
Проблема : Предположим, что в будущем значения 'pin_type' - 1, 4, 101, 104 изменятся в бэкэнде, как я могу обработать такой случай, не меняя мою модель , Согласно этой структуре модели, мне нужно менять класс модели каждый раз, когда меняется внутренняя модель