Android JSON / GSON反序列化问题

时间:2011-05-27 11:12:03

标签: android json gson

我正在尝试使用GSON对以下JSON部分进行反序列化。

       "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中有三个条目,如上所述。如何使用GSON处理此JSON?

提前多多感谢!

马丁

1 个答案:

答案 0 :(得分:0)

以下示例的输出为

[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;
  }
}