0

我有一个 JSON 字符串

   [
   {"created_at":"Thu Jan 24 07:27:12 +0000 2013",
     "id":294345590119227392,
     "user":{
             "id":213539531,
              "name":"Hamid",
              "screen_name":"HamidMirGEO",
             },
     "retweeted":false
     }]

使用以下代码解析

        InputStream is = this.getResources().openRawResource(R.raw.jsontwitter);
        byte [] buffer = new byte[is.available()];
        while (is.read(buffer) != -1);
        String jsontext = new String(buffer);
        JSONArray entries = new JSONArray(jsontext);
        for (i=0;i<entries.length();i++)
        {
            JSONObject post = entries.getJSONObject(i);
            x += "Date:" + post.getString("created_at") + "\n";
            x += "Post:" + post.getString("text") + "\n\n";
            x += "Pp:" + post.getString("screen_name") + "\n\n";//error reading this
        }

成功解析前两个,但在读取第二个大括号 {} 中的数据时遇到问题;对此的任何解决方案。

4

4 回答 4

4

采用:

x += "Pp:" + post.getJSONObject("user").getString("screen_name") + "\n\n";

代替:

x += "Pp:" + post.getString("screen_name") + "\n\n";
于 2013-01-24T08:01:37.707 回答
2

screen_name在嵌套对象中。使用此代码:

post.getJSONObject("user").getString("screen_name");
于 2013-01-24T08:01:38.410 回答
2

要获取 screen_name,您需要访问JSONObject它包含的内容。像这样:

JSONObject user = post.getJSONObject("user");
user.getString("screen_name") // this will return the screen_name
于 2013-01-24T08:09:55.243 回答
1

在“HamidMirGeo”之后你有一个额外的昏迷,删除它。

于 2013-01-24T08:03:19.377 回答