如何将 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<=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解析android在listview中获取图像