2011-05-27 170 views
-1

我正在用GSON反序列化以下JSON部分。Android 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中有三个条目。我怎样才能用GSON来处理这个JSON?

非常感谢!

马丁

+0

你能提供你写一些代码?另外提供一些堆栈跟踪会很有帮助。 – pixel 2011-05-27 11:21:01

+0

您发布的JSON无效。 http://jsonlint.com JSON必须以{或[。开头。 – 2011-05-31 10:32:08

回答

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