Проблема десериализации Android JSON / GSON - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь десериализовать следующую часть 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?

Заранее большое спасибо!

Martin

1 Ответ

0 голосов
/ 31 мая 2011

Вывод следующего примера:

[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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...