Генерация модели для JSON с атрибутом типа List и String - PullRequest
0 голосов
/ 10 ноября 2018

Заранее спасибо тем, кто мог видеть мою публикацию. Я работаю со службами, и у меня есть следующий JSON

"custom_attributes": [                  
        {
            "attribute_code": "meta_description",
            "value": "Calzado"
        },
        {
            "attribute_code": "category_ids",
            "value": [
                "2",
                "151",
                "161",
                "163"
            ]
        }
    ]

и то, что я пытаюсь, выдает следующую ошибку, если атрибут Value я помещаю в список.

java.lang.IllegalStateException: ожидаемый BEGIN_ARRAY, но он был STRING в строке 1 столбца 8375 путь $ .custom_attributes [0] .value

модель

public class CustomAttribute {

@SerializedName("attribute_code")
private String attributeCode;
@SerializedName("value")
private List<String> value = null;

public String getAttributeCode() {
return attributeCode;
}

public void setAttributeCode(String attributeCode) {
this.attributeCode = attributeCode;
}

public List<String> getValue() {
return value;
}

public void setValue(List<String> value) {
this.value = value;
}

}

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

"custom_attributes" сам по себе является массивом с объектами

Я предполагаю, что где-то у вас есть List<CustomAttibute>

и этот массив не имеет согласованного формата объекта внутри. value - это и строка, и List<String>.

Лучшее, что вы можете сделать, это private Object value = null;, тогда вы должны проверить его тип и привести его позже во время выполнения, или вы не можете использовать Retrofit с конвертером Gson, так как Gson ожидает последовательно сформированные типы объектов в списках (то есть для каждый ключ JSON, есть только один тип значения).

0 голосов
/ 10 ноября 2018

Ошибка, которую вы получаете, означает, что вы указываете модели ожидать массива, в котором она должна получать строку.

Чтобы легко решить вашу проблему, вы можете использовать этот онлайн-ресурс для генерации вашей модели (просто скопировав json-файл)

или вы можете использовать этот плагин для генерации модели прямо из Android Studio!

Надеюсь, ты получил ответ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...