0

这是我的 Json:

{

    "feed": [
        {
            "id": "124124124124",
            "source": "aaaaaa",
            "comment_count": 0,
            "link": "bbbbb",
            "created_time": "2012-05-30T15:57:05+0000",
            "message": "ccccc",
            "type": "dddd",
            "thumbnail": "eeeee"
        },
        {
            "id": "35464423423412414",
            "source": "qweqddq",
            "comment_count": 0,
            "link": "adadasdwe",
            "created_time": "2012-05-30T15:52:21+0000",
            "message": "dadsadad",
            "type": "sfdcsdv",
            "thumbnail": "csdgfsd"
        },
        {

    "name": "asdadqwff",
    "id": "73182372381",
    "source": "lajhdkbad",
    "comment_count": 0,
    "link": "adjkbxczckbj",
    "created_time": "2012-05-30T15:40:28+0000",
    "message": "awjasdjands",
    "type": "lalkdm",
    "thumbnail": "akmldsncj"

     }

    ]

  }

这些是我在解析中使用的 java 类:

public class Feed {

    @SerializedName("feed")
    ArrayList<FeedResult> feed;

    public ArrayList<FeedResult> getFeed() {
        return feed;
    }

    public void setFeed(ArrayList<FeedResult> feed) {
        this.feed = feed;
    }   

}


public class FeedResult {

    @SerializedName("id")
    String id;

    @SerializedName("created_time")
    String created_time;

    @SerializedName("message")
    String message;

    @SerializedName("thumbnail")
    String thumbnail;

    @SerializedName("comment_count")
    String comment_count;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getCreated_time() {
        return created_time;
    }

    public void setCreated_time(String created_time) {
        this.created_time = created_time;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getThumbnail() {
        return thumbnail;
    }

    public void setThumbnail(String thumbnail) {
        this.thumbnail = thumbnail;
    }

    public String getComment_count() {
        return comment_count;
    }

    public void setComment_count(String comment_count) {
        this.comment_count = comment_count;
    }


}

这是主类的内部:

InputStream source = retrieveStream(url);

            Gson gson=new Gson();

            Reader reader = new InputStreamReader(source);

            Feed feeds=gson.fromJson(reader,Feed.class);

            ArrayList<FeedResult>feed=new ArrayList<FeedResult>();

            feed=feeds.getFeed();

            Toast.makeText(this,"feed --> ?? "+ feed, Toast.LENGTH_LONG).show();

feeds.getFeed()返回空值。这是为什么?谢谢你的帮助。

4

1 回答 1

0

与其直接将输入流提供给 GSON 构造函数,不如先从 URL 下载 JSON 字符串,然后将其传递给构造函数进行解析,如下所示:

String source = read(url);
Feed feeds=new Gson().fromJson(source ,Feed.class);
ArrayList<FeedResult>feed=new ArrayList<FeedResult>();
feed=feeds.getFeed();
for(FeedResult feedResult:feedResults)
    System.out.println(feedResult);

读取功能:

public static String read(String url){

    System.out.println("Connecting to service URL : "+url);
    InputStream is = null;
    String result = "";
    // http post
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    } catch (Exception e) {
        e.printStackTrace();
    }

    // convert response to string
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();

    } catch (Exception e) {
        e.printStackTrace();
    }


    return result;
}

在 FeedResult 类中添加 toString() 函数,以便它以可读的方式打印到控制台:

/* (non-Javadoc)
 * @see java.lang.Object#toString()
 */
@Override
public String toString() {
    return "FeedResult [id=" + id + ", created_time=" + created_time
            + ", message=" + message + ", thumbnail=" + thumbnail
            + ", comment_count=" + comment_count + "]";
}
于 2012-07-02T12:41:01.977 回答