【问题标题】:Parsing URL using GSON使用 GSON 解析 URL
【发布时间】:2013-10-08 10:44:11
【问题描述】:

我刚刚尝试使用 GSON 解析给定的 URL,但遇到了一些问题。

网址

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

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

Json 响应是这样的。其中包含一个 ({ 在字符串的开头,这会导致解析出现问题。

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


}

【问题讨论】:

  • 请指出问题
  • @josuadas 指定你能再检查一下吗:)
  • 是的!现在很清楚了:)
  • 也许先从开头和结尾去掉“(”和“)”。

标签: android json gson


【解决方案1】:

看一下Json,可以看到media是class:

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

因此我添加了新类 Media 和 String m;

顺便说一句,你不需要发起List&lt;Items&gt; items = new ArrayList&lt;Flicker.Items&gt;();

Gson 会为您执行此操作并将任何 List 转换为 LinkedList

这是一个带有修复的工作代码:

启动器

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2011-02-12
    • 2012-01-02
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多