Android中如何解析此类JSON输出?
Android解析目标JSON的实操步骤
嘿,我来教你在Android上解析这个特定的JSON结构!咱们用Android系统自带的org.json库就能搞定,不用额外引入第三方框架,步骤超清晰:
1. 先准备JSON字符串
首先你需要把接口返回的JSON内容转换成字符串形式,比如:
String jsonResponse = "[ { \"hit\": \"1\" }, { \"SUM(hit)\": \"196290\" }, { \"COUNT(id)\": \"4010\" } ]";
如果你的项目用了Java 15及以上版本,也可以用原始字符串字面量来避免转义引号,写起来更舒服:
String jsonResponse = """ [ { "hit": "1" }, { "SUM(hit)": "196290" }, { "COUNT(id)": "4010" } ] """;
2. 解析JSON数组与对象
接下来就是核心的解析逻辑了,我们先把字符串转成JSONArray,然后遍历数组里的每个JSONObject,根据键名取出对应的值:
try { // 将字符串转换为JSON数组 JSONArray jsonArray = new JSONArray(jsonResponse); // 遍历数组中的每个JSON对象 for (int i = 0; i < jsonArray.length(); i++) { JSONObject itemObject = jsonArray.getJSONObject(i); // 逐个判断对象中的键,取出对应值 if (itemObject.has("hit")) { String hitStr = itemObject.getString("hit"); // 如果需要数字类型,可转换为int:int hit = Integer.parseInt(hitStr); Log.d("JSON解析结果", "hit: " + hitStr); } else if (itemObject.has("SUM(hit)")) { String sumHitStr = itemObject.getString("SUM(hit)"); // 转换为长整型更合适,因为数值较大:long sumHit = Long.parseLong(sumHitStr); Log.d("JSON解析结果", "SUM(hit): " + sumHitStr); } else if (itemObject.has("COUNT(id)")) { String countIdStr = itemObject.getString("COUNT(id)"); // 转换为int:int countId = Integer.parseInt(countIdStr); Log.d("JSON解析结果", "COUNT(id): " + countIdStr); } } } catch (JSONException e) { // 必须捕获解析异常,避免APP崩溃 e.printStackTrace(); Log.e("JSON解析错误", "解析失败原因:" + e.getMessage()); }
3. 几个关键注意点
- 类型转换:JSON里的所有值都是字符串类型,如果你需要数字类型(比如统计数值),一定要手动转换,记得处理可能的
NumberFormatException哦。 - 异常处理:
JSONException必须捕获,比如JSON格式错误、键名拼写错误、值的类型不匹配等情况都会触发这个异常,千万别漏掉。 - 第三方库可选:如果你项目里已经用了Gson、Moshi这类库,也可以用它们来解析,但对于这种简单结构,系统自带的
org.json完全够用,不用额外加依赖。
内容的提问来源于stack exchange,提问作者Zeeshan Ahmed
相关产品推荐
相关产品推荐

