Мне нужны некоторые указатели здесь.
Я говорю об API, который возвращает данные на основе определенных параметров.Я взял этот ответ и выровнял / отредактировал его, чтобы он соответствовал моей модели, а затем сохранил в базе данных.Все отлично работало до сегодняшнего дня, пока я не начал тестировать живую конечную точку (без фиктивных данных), и, как оказалось, формат ответа меняется.
Например, если у набора данных нет записи,вместо того, чтобы включать значение как ноль, некоторые ответы вообще не включают этот ключ.Это нарушает мою логику, чтобы сгладить и отредактировать, так как теперь мне нужно проверить, что каждое отдельное поле существует, прежде чем что-либо делать.
Вот 2 фрагмента того, как это может выглядеть
Пример1 - (Нет общего доступа)
{
"request_info": {
"city_id": 76211,
"currency": "usd",
"req_type": "geom"
},
"data": {
"rental_counts": {
"counts": {
"private": {
"1": 17,
"2": 3,
"all": 20
},
"entire": {
"0": 2,
"1": 8,
"2": 11,
"3": 16,
"4": 14,
"5": 6,
"all": 57
}
},
}
}
}
Пример 2 (включая общий)
{
"request_info": {
"city_id": 76211,
"currency": "usd",
"req_type": "geom"
},
"data": {
"rental_counts": {
"counts": {
"private": {
"1": 17,
"2": 3,
"all": 20
},
"entire": {
"0": 2,
"1": 8,
"2": 11,
"3": 16,
"4": 14,
"5": 6,
"all": 57
},
"shared": {
"0": 2,
"1": 8,
"all": 10
}
},
}
}
}
Изменения, которые, я считаю, могут произойти на любом уровне и для любого ключа (родительского или дочернего).Я уверен, что я не первый, кто сталкивается с чем-то вроде этого.Каков наилучший способ управлять этим?Есть ли какой-нибудь метод или гем, который помог бы разобрать json и включить его в стандартизированную модель, независимо от того, есть ключи данных или нет?
Я смотрел на Roar, но все еще не совсем понимаю, как он работаетотлично.Это что-то, с чем может справиться Роар, или объект json должен быть предварительно определенным, а не динамическим?