2012-07-02 154 views
0

这是我的JSON:为什么null值在android中的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

,而不是直接给予的InputStream到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 + "]"; 
} 
+0

我试过并得到这个错误 - > com.google.gson.JsonParseException:期待找到对象:“<!DOCTYPE” – selenk

+0

@S.Kartoğlu发生这种情况是因为您的服务返回非JSON响应。所以我建议你检查服务是否正常工作。或者可能是您将不正确的参数传递给该服务 – sunil