android - 使用滚动在可扩展列表视图中加载json

时间:2014-03-10 14:56:10

标签: java android json eclipse uitableview

我有一个下载的应用程序,并将Json数据库保存到存储。

我应该在可扩展列表视图中查看Json对象,我有很多主题,所以我也必须有一个卷轴!

我想知道如何解析Json并将其加载到数组中,然后使用该数组制作可扩展列表视图?

try {
        URL url = new URL(gURL);
        HttpURLConnection c = (HttpURLConnection) url.openConnection();
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();
        String PATH = Environment.getExternalStorageDirectory()
                + "/H3S/DB";
        File file = new File(PATH);
        String fileName = fName;
        File outputFile = new File(file, fileName);
        FileOutputStream fos = new FileOutputStream(outputFile);
        InputStream is = c.getInputStream();
        byte[] buffer = new byte[1024];
        int len1 = 0;
        while ((len1 = is.read(buffer)) != -1) {
            fos.write(buffer, 0, len1);
        }
        fos.close();
        is.close();

这是json的示例响应:(抱歉json语言是波斯语,因为它们不是UTF-8而不会显示标题):

{
"DBVersion":"4" , 
"Groups":[
{
    "Id"    : 1,
    "title" : "کامپیوتر",
    "bg"    : "1.png"
},
{
    "Id"    : 2,
    "title" : "شیمی",
    "bg"    : "2.png"
},
{
    "Id"    : 3,
    "title" : "برق و الکترونیک",
    "bg"    : "3.png"
},
{
    "Id"    : 4,
    "title" : "Ùیزیک",
    "bg"    : "4.png"
},
{
    "Id"    : 5,
    "title" : "ریاضی",
    "bg"    : "5.png"
},
{
    "Id"    : 6,
    "title" : "مکانیک Ùˆ هواÙضا",
    "bg"    : "6.png"
},
{
    "Id"    : 7,
    "title" : "زیست",
    "bg"    : "7.png"
}
]
}

我是iOS开发人员,我在iOS中使用Grouped Style UITableView成功完成此操作,但我不知道如何在Android中完成此操作!

2 个答案:

答案 0 :(得分:1)

这可以帮到你。这是用于解析响应的代码。

  try {
                    JSONObject jsonObject = new JSONObject(buffer.toString());
                    String Dbversion= jsonObject.getString("DBVersion");
                    JSONArray jaGroups = jsonObject.getJSONArray("Groups");
                    for (int i = 0; i < jaGroups.length(); i++) {


                        JSONObject jsObject = jaGroups.getJSONObject(i);
                        String Id = jsObject.getString("Id");
                        String title = jsObject.getString("title");
                        String bg = jsObject.getString("bg");

                    }

                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

答案 1 :(得分:0)

您可以在JsonReader上使用Android中的InputStreamReader。您只需根据需要调整开发人员示例中的解析:

http://developer.android.com/reference/android/util/JsonReader.html