Android Studio中将JSON响应转为可读格式并显示到TextView的问题
解决JSON响应格式化显示到TextView的问题
你现在的问题是直接把JSON数组的原始字符串设置到TextView里,所以看起来乱糟糟的。要实现每行清晰显示一条用户的排名、用户名和分数,我们可以遍历JSON数组里的每个对象,逐个拼接成易读的字符串,最后用换行符把所有条目连起来。
修改后的代码示例
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { try { Log.d("json", response); JSONObject jsonObject = new JSONObject(response); JSONArray jsonArray = jsonObject.getJSONArray("data"); // 用来拼接最终显示的字符串,比直接用"+"拼接更高效 StringBuilder displayText = new StringBuilder(); // 遍历数组里的每一条用户数据 for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonRow = jsonArray.getJSONObject(i); // 取出三个字段的值 String rank = jsonRow.getString("rank"); String username = jsonRow.getString("username"); String score = jsonRow.getString("score"); // 按自定义格式拼接,每行末尾加换行符 displayText.append("排名").append(rank).append(": ").append(username).append(" - 分数").append(score).append("\n"); } // 把拼接好的可读文本设置到TextView leaderboardView.setText(displayText.toString()); } catch (JSONException e) { e.printStackTrace(); // 可以在这里添加错误提示,提升用户体验 leaderboardView.setText("排行榜加载失败,请稍后重试"); } } });
关键说明
- 修复了数据丢失问题:你之前的代码只取了数组里的第一个元素
jsonArray.getJSONObject(0),现在通过循环遍历能把所有10条数据都处理到。 - 自定义显示格式:你可以根据需求调整拼接规则,比如改成
"#" + rank + " " + username + " | 分数: " + score,完全适配你想要的排版。 - 异常处理优化:在catch块里给TextView设置错误提示,用户能直观知道加载状态,而不是只在日志里打印错误。
修改后,TextView会显示成清晰的列表格式:
排名1: DolanF - 分数4220 排名2: reyay - 分数3760 排名3: MeghanG - 分数2570 ... 排名10: Joel - 分数390
内容的提问来源于stack exchange,提问作者Charlie Ansell
相关产品推荐
相关产品推荐

