如何将 JSON 字符串解析为 ListView?

Posted

技术标签:

【中文标题】如何将 JSON 字符串解析为 ListView?【英文标题】:How to parse a JSON string to ListView? 【发布时间】:2020-02-28 06:05:07 【问题描述】:

所以我开始编写 Java android 并尝试解析我创建的 JSON 字符串。所以,我想将其解析为ListView,我需要人来帮助我。

我的实验 JSON 文件:

[ 
    
      "HoTen":" Nguy\u1ec5n V\u0103n A",
      "NamSinh":1999,
      "DiaChi":"H\u00e0 N\u1ed9i"
   ,
   +,
   +,
   +,
   +,
   +,
   +,
   +,
   +
]

我的代码,但它不起作用:

 protected void onPostExecute(String s) 

     //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
     try 
         mangLV = new ArrayList<String>();

         JSONArray jsonArray = new JSONArray(s);
         JSONObject jsonObject = new JSONObject(s);
         for (int i =0;i<=jsonObject.length();i++)
         
             JSONObject  object = jsonArray.getJSONObject(i);
             //HoTen.getString("HoTen");
             String HoTen = object.getString("HoTen");
             int NamSinh = object.getInt("NamSinh");
             String DiaChi = object.getString("DiaChi");

         
         ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,mangLV);
         lvSinhVien.setAdapter(adapter);
      catch (JSONException e) 
         e.printStackTrace();
     
 

【问题讨论】:

请查看我下面的答案。我为你测试过。不要忘记留下接受和投票的标志。谢谢! 【参考方案1】:

希望对你有帮助

protected void onPostExecute(String s) 

    //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
    try 
        ArrayList<String> mangLV = new ArrayList<String>();

        JSONArray jsonArray = new JSONArray(s);
        for (int i = 0; i < jsonArray.length(); i++) 
            JSONObject object = jsonArray.getJSONObject(i);
            //HoTen.getString("HoTen");
            String HoTen = object.getString("HoTen");
            int NamSinh = object.getInt("NamSinh");
            String DiaChi = object.getString("DiaChi");
            String result = String.format("HoTen: %s, NamSinh: %s, DiaChi: %s",
                    HoTen, NamSinh, DiaChi);
            mangLV.add(result);
        
        ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, mangLV);
        lvSinhVien.setAdapter(adapter);
     catch (JSONException e) 
        e.printStackTrace();
    

【讨论】:

【参考方案2】:

您似乎没有使用您的JSONObject jsonObject = new JSONObject(s);。您的 for 应该是 for(int i = 0; i&lt;=jsonArray.length();i++),从而使您的 jsonObject 过时。此外,您正在向您的适配器传递一个空列表!你永远不会在你的 mangLV 列表中添加任何东西。

试试这个代码:

    protected void onPostExecute(String s) 
        //Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
        try 
            mangLV = new ArrayList<String>();

            JSONArray jsonArray = new JSONArray(s);
            for(int i = 0; i < jsonArray.length(); i++)
            
                JSONObject object = jsonArray.getJSONObject(i);
                String HoTen = object.getString("HoTen");
                int NamSinh = object.getInt("NamSinh");
                String DiaChi = object.getString("DiaChi");
                String result = "HoTen " + HoTen + " | NamSinh " + NamSinh + " | DiaChi " + DiaChi;
                mangLV.add(result);  //After fetching the values, add the objects to your list    
            
            ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,mangLV);
            lvSinhVien.setAdapter(adapter);
         catch (JSONException e) 
            e.printStackTrace();
        
    

这应该会添加到您的 ListView 对象中,如下所示:

HoTen Nguy\u1ec5n V\u0103n A | NamSinh 1999 | DiaChi H\u00e0 N\u1ed9i

【讨论】:

以上是关于如何将 JSON 字符串解析为 ListView?的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 解析为 ListView 友好的输出

如何将资产文件夹中的本地 JSON 文件解析为 ListView?

将 JSON 数据解析为 ListView

如何使用json解析android在listview中获取图像

Android:如何让我检索到的(来自 mysql)JSON 解析数据添加到 ListView 每分钟刷新一次

如何将 JSON 数组解析为字符串? [复制]