这是我的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()
返回null。这是为什么?谢谢你的帮助。
答案 0 :(得分: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 + "]";
}