You need to enable JavaScript to run this app. Swift中如何对JSON返回的buttons数组按payload升序排序并调整title格式
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何对JSON返回的buttons数组按payload升序排序并调整title格式

Swift 接口返回按钮数组的排序与字段格式化实现

基础模型定义

首先需要定义与接口JSON结构匹配的可解码模型,完成响应数据的解析:

  • 外层响应模型需包含buttons数组字段,对应接口返回的按钮集合
  • 单个按钮模型需精准映射两个字段:payload(字符串形式的数值)、title(按钮展示文本)

核心处理逻辑

整体处理分为两步,无额外第三方依赖,基于Swift原生语法即可实现:

按payload数值升序排序

注意:不可直接对字符串格式的payload做字典序排序,否则遇到多位数payload时会出现排序错乱,比如"10"会排在"2"前面

排序逻辑为:将每个按钮的payload字段转换为整数类型数值,以此为排序键对按钮数组做升序排列,最终将原本顺序为3、1、2、4的数组调整为1、2、3、4的数值顺序。

格式化按钮标题文本

遍历完成排序的按钮数组,对每个元素的title字段做格式替换:将元素对应的payload数值作为前缀,拼接成{payload值}. {原有title文本}的格式,替换原来的title内容。

示例实现代码

// 匹配接口结构的解码模型
struct ResponseModel: Decodable {
    let buttons: [ButtonInfo]
}

struct ButtonInfo: Decodable {
    let payload: String
    var title: String
}

// 数组处理方法
func processButtonList(from response: ResponseModel) -> [ButtonInfo] {
    var targetList = response.buttons
    // 数值排序
    targetList.sort { left, right in
        guard let leftValue = Int(left.payload),
              let rightValue = Int(right.payload) else {
            // 非数值payload可根据业务规则兜底,默认排在数组尾部
            return false
        }
        return leftValue < rightValue
    }
    // 标题格式化
    for index in targetList.indices {
        let payloadPrefix = targetList[index].payload
        let originTitle = targetList[index].title
        targetList[index].title = "\(payloadPrefix). \(originTitle)"
    }
    return targetList
}

处理效果示例

假设接口返回的原始按钮数组为:

[
  {"payload": "3", "title": "退款申请"},
  {"payload": "1", "title": "账户咨询"},
  {"payload": "2", "title": "订单查询"},
  {"payload": "4", "title": "投诉建议"}
]

经过上述逻辑处理后,最终输出的按钮数组为:

[
  {"payload": "1", "title": "1. 账户咨询"},
  {"payload": "2", "title": "2. 订单查询"},
  {"payload": "3", "title": "3. 退款申请"},
  {"payload": "4", "title": "4. 投诉建议"}
]

落地注意事项

  • 由于需要修改按钮的title属性,按钮模型中的title字段必须用var修饰,不可用不可变的let定义
  • 字符串转整数的操作需要做异常判断,避免接口返回非预期的非数值型payload时造成运行时崩溃
  • 排序逻辑中可根据业务需求调整非数值payload的排序位置,比如将异常值固定排在数组最前或最后

内容的提问来源于stack exchange,提问作者KosuruUday SaiKumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 04:54:07