#android #json #gson
#Android #json #gson
Вопрос:
Я пытаюсь десериализовать следующую часть JSON с помощью GSON.
"images": [
{
"link": "http://media.neckermann.de/image/101/900/7/27/927/101_219927.jpg"
},
{
"link": "http://media.neckermann.de/image/101/480/7/27/927/101_219927.jpg"
},
{
"link": "http://media.neckermann.de/image/101/210/7/27/927/101_219927.jpg"
}
]
Если GSON получает эту строку JSON, происходит сбой GSON. Если в «изображениях» есть только один элемент, он отлично работает. Как я могу решить эту проблему? Иногда я получаю только одну «ссылку» в JSON, а иногда в JSON есть три записи, как указано выше. Как я могу обработать этот JSON с помощью GSON?
Заранее большое спасибо!
Мартин
Комментарии:
1. Можете ли вы предоставить какой-нибудь код, который вы написали? Также было бы очень полезно предоставить некоторую трассировку стека.
2. Опубликованный вами JSON недопустим. jsonlint.com JSON должен начинаться либо с {, либо [.
Ответ №1:
Вывод следующего примера является
[link=http://media.neckermann.de/image/101/900/7/27/927/101_219927.jpg , link=http://media.neckermann.de/image/101/480/7/27/927/101_219927.jpg , link=http://media.neckermann.de/image/101/210/7/27/927/101_219927.jpg ]
public class Foo
{
static String jsonInput =
"{"
""images":"
"["
"{"
""link":"http://media.neckermann.de/image/101/900/7/27/927/101_219927.jpg""
"},"
"{"
""link":"http://media.neckermann.de/image/101/480/7/27/927/101_219927.jpg""
"},"
"{"
""link":"http://media.neckermann.de/image/101/210/7/27/927/101_219927.jpg""
"}"
"]"
"}";
public static void main(String[] args)
{
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
Gson gson = gsonBuilder.create();
ImageUris uris = gson.fromJson(jsonInput, ImageUris.class);
System.out.println(uris);
}
}
class ImageUris
{
private ImageUri[] images;
@Override
public String toString()
{
return Arrays.toString(images);
}
}
class ImageUri
{
private String link;
@Override
public String toString()
{
return "link=" link;
}
}