You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析嵌套JSON Array并提取数值填充到Android Spinner控件

解决步骤

首先明确你拿到的嵌套结构层级:

  1. 最外层是长度为1的JSONArray
  2. 取出外层数组第0位的JSONObject,取key为NVAKSINATOR的value,这个值是转义后的字符串格式的内层JSONArray
  3. 把这个字符串转成内层JSONArray,遍历取每个元素的NVAKSINATOR值即可得到你要的数值

原生org.json实现代码(Android系统自带,无需额外依赖)

// 1. 先拿到你从Activity A接收到的外层JSONArray,假设叫receivedJsonArray
try {
    // 2. 取外层数组第一个对象,拿到字符串格式的内层JSON数组
    JSONObject outerObj = receivedJsonArray.getJSONObject(0);
    String innerJsonStr = outerObj.getString("NVAKSINATOR");
    JSONArray innerJsonArray = new JSONArray(innerJsonStr);
    
    // 3. 遍历内层数组提取数值,存到列表给Spinner用
    List<String> spinnerData = new ArrayList<>();
    for (int i = 0; i < innerJsonArray.length(); i++) {
        JSONObject innerObj = innerJsonArray.getJSONObject(i);
        String value = innerObj.getString("NVAKSINATOR");
        spinnerData.add(value);
    }
    
    // 4. 填充到Spinner
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerData);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    yourSpinner.setAdapter(adapter);
    
} catch (JSONException e) {
    e.printStackTrace();
    // 可自定义异常处理逻辑,比如提示用户数据解析失败
}

优化建议

  • 该嵌套结构本质是Activity A传递数据环节的冗余封装导致的:大概率是你在A中把目标JSONArray转成字符串后,又塞进了带NVAKSINATOR键的对象,再封装到数组传递才会生成该结构。如果可以修改A的传递逻辑,直接把目标JSONArray转成字符串通过Intent的putExtra传递,可省去外层解析步骤。
  • 如果需要对提取到的数值做计算操作,可把getString替换为getInt/getLong,存储到对应数字类型的列表即可。

内容的提问来源于stack exchange,提问作者Irfan Ahmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:03