2011-05-27 216 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; 
    } 
}