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

如何从JSON数组的不同JSON对象中提取name值并展示到同一个TextView中

实现方案

首先你提供的示例JSON存在语法问题,先给出修正后的合法JSON结构:

{
  "item": [
    {
      "item_id": 1,
      "add_on": [
        {
          "name": "Thin Crust"
        },
        {
          "name": "Extra Cheese"
        },
        {
          "name": "Extra Sauce"
        }
      ]
    }
  ]
}

以下是Android平台两种常见的实现方式:

方式一:使用系统原生org.json解析(无额外依赖)

Kotlin代码

try {
    // jsonStr为你拿到的原始JSON字符串
    val rootJson = JSONObject(jsonStr)
    val itemArray = rootJson.getJSONArray("item")
    val firstItem = itemArray.getJSONObject(0)
    val addOnArray = firstItem.getJSONArray("add_on")

    val nameList = mutableListOf<String>()
    for (i in 0 until addOnArray.length()) {
        nameList.add(addOnArray.getJSONObject(i).getString("name"))
    }
    // 可按需修改分隔符,比如换成逗号、换行符都可以
    val result = nameList.joinToString("、")
    // 赋值给TextView
    targetTextView.text = result
} catch (e: JSONException) {
    // 解析异常处理,可设置默认提示
    targetTextView.text = "暂无附加配置"
}

Java代码

try {
    JSONObject rootJson = new JSONObject(jsonStr);
    JSONArray itemArray = rootJson.getJSONArray("item");
    JSONObject firstItem = itemArray.getJSONObject(0);
    JSONArray addOnArray = firstItem.getJSONArray("add_on");

    List<String> nameList = new ArrayList<>();
    for (int i = 0; i < addOnArray.length(); i++) {
        nameList.add(addOnArray.getJSONObject(i).getString("name"));
    }

    StringBuilder resultBuilder = new StringBuilder();
    for (int i = 0; i < nameList.size(); i++) {
        resultBuilder.append(nameList.get(i));
        if (i != nameList.size() - 1) {
            resultBuilder.append("、");
        }
    }
    targetTextView.setText(resultBuilder.toString());
} catch (JSONException e) {
    e.printStackTrace();
    targetTextView.setText("暂无附加配置");
}

方式二:Gson解析(适合大型项目,需引入Gson依赖)

先定义对应实体类:

data class AddOn(val name: String)
data class Item(val item_id: Int, val add_on: List<AddOn>)
data class RootData(val item: List<Item>)

解析代码:

val rootData = Gson().fromJson(jsonStr, RootData::class.java)
val nameList = rootData.item.firstOrNull()?.add_on?.map { it.name } ?: emptyList()
targetTextView.text = nameList.joinToString("、")

注意事项

  • 如果item数组存在多个元素,遍历整个item数组收集所有add_on的name即可
  • 必须添加异常捕获逻辑,避免JSON字段缺失、格式错误导致崩溃

内容的提问来源于stack exchange,提问作者Salman Afzal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:48:03