1

我有一个包含三个片段的活动,我正在尝试从我的服务器中检索一个 JSON 文件,我将每天更新该文件。

我的 JSON 文件位于:http: //pagesbyz.com/test.json

因为有片段,所以我在MainActivity课堂上使用了以下代码:

DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
        HttpPost httppost = new HttpPost("http://pagesbyz.com/test.json");
        // Depends on your web service
        httppost.setHeader("Content-type", "application/json");

        InputStream inputStream = null;
        String result = null;
        try {
            HttpResponse response = httpclient.execute(httppost);           
            HttpEntity entity = response.getEntity();

            inputStream = entity.getContent();
            // json is UTF-8 by default
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();

            String line = null;
            while ((line = reader.readLine()) != null)
            {
                sb.append(line + "\n");
            }
            result = sb.toString();
            Toast.makeText(getApplicationContext(), result, 2000).show();
        } catch (Exception e) { 
            // Oops
        }
        finally {
            try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
        }

我真正需要做的是检索TYPE我的 JSON 文件中的字段并将其分成三个选项卡并将其放入ListView如下所示:

在此处输入图像描述

我想知道,一旦我使用顶部的代码阅读了 JSON 文件,我该如何继续……感谢您的帮助:)

我应该查询每个片段然后查找 TYPE 字段吗?那会更容易吗?

好奇为什么 Toast 没有执行……这是我主要活动的 pastebin:http: //pastebin.com/gKTCeH79

4

1 回答 1

1

您要做的是使用 Android 的 JSONObject 和 JSONArray 来访问您的 json 数据。

例如,由于您的根是一个 json 数组,因此您希望从您拥有的 json 数据中实例化一个 JSONArray 对象。

JSONArray jsonArray = new JSONArray(jsonString);

现在,您可以从这个数组中为数组中的每个对象获取单独的 JSONObject。

JSONObject objectOne = new JSONObject(0); // Grabs your first item

您现在可以从 JSONObject 访问您的三个值。

String type = objectOne.get("type") // Will give you the value for type

JSONArray:http: //developer.android.com/reference/org/json/JSONArray.html

JSONObject:http: //developer.android.com/reference/org/json/JSONObject.html

另一种方法是使用允许您将 json 反序列化为 Java POJO(普通旧 Java 对象)的框架。Gson 是最容易使用的。

基本思想是您创建一个与您的 json 对象直接相关的对象,在您拥有它之后,您可以轻松地将数据存储在 java 对象中并按照您的喜好使用它。

GSON 示例:

Gson gson = new Gson();
MyCustomClass obj2 = gson.fromJson(json, MyCustomClass.class);

其中 MyCustomClass 将包含变量 id、type 和 data。

GSON 参考:https ://sites.google.com/site/gson/gson-user-guide

祝你好运!

于 2013-11-08T21:19:05.450 回答