2013-10-08 76 views
2

我只是嘗試使用GSON解析給定的URL,但我遇到了一些問題。使用GSON解析URL

的URL

http://api.flickr.com/services/feeds/photos_public.gne?format=json

jsonFlickrFeed({ 
    "title": "Uploads from everyone", 
    "link": "http://www.flickr.com/photos/", 
    .....) 

JSON響應是一些像這樣的事情。其中包含({字符串的begning這使得問題解析

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 

我的模型類下面這樣:

public class Flicker { 

    public JsonFlickrFeed jsonFlickrFeed; 

    public JsonFlickrFeed getDealList() { 

     return jsonFlickrFeed; 
    } 

    public static class JsonFlickrFeed{ 

     public String title; 
     public String link; 
     public String description; 
     public String modified; 
     public String generator; 
     public List<Items> items = new ArrayList<Flicker.Items>(); 

    } 

    public static class Items { 

     public String title; 
     public String link; 
     public String media; 
     public String date_taken; 
     public String description; 
     public String published; 
     public String author; 
     public String author_id; 
     public String tags; 
    } 


} 
+1

指定指定,請 – josuadas

+0

@josuadas可以請你再檢查問題:) – Bora

+0

是的!現在很清楚:) – josuadas

回答

2

以JSON的一看,你可以看到,media是類:

"media": {"m":"http://farm4.staticflickr.com/3706/10153214694_177e2dcd6d_m.jpg"}, 

所以我增加了新的類MediaString m;

BTW,你不需要啓動List<Items> items = new ArrayList<Flicker.Items>();

GSON會替你和轉換任何ListLinkedList

這裏是一個工作的代碼與修復:

啓動

str = str.substring("jsonFlickrFeed(".length(), str.length()-1); 

Gson gson = new Gson(); 
System.out.println(str); 
JsonFlickrFeed jj = gson.fromJson(str, JsonFlickrFeed.class); 

System.out.println((jj != null)?"true":"false"); 

媒體

public class Media { 
    public String m; 
} 

JsonFlickrFeed

public class JsonFlickrFeed { 
    public String title; 
    public String link; 
    public String description; 
    public String modified; 
    public String generator; 
    public List<Items> items; 
} 

項目

public class Items { 
    public String title; 
    public String link; 
    public Media media; 
    public String date_taken; 
    public String description; 
    public String published; 
    public String author; 
    public String author_id; 
    public String tags; 
}