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

Swift 5中如何使用Freddy Framework发送字典及数组请求参数?

使用Freddy发送数组和字典类型的请求参数

嘿,刚好我之前用Freddy处理过类似的请求结构,给你一步步拆解怎么实现你要的JSON格式!

核心思路

Freddy构建复杂JSON的关键是用JSON枚举的不同case对应不同类型:

  • 数组用JSON.array([JSON])包装
  • 字典(嵌套对象)用JSON.dictionary([String: JSON])包装
  • 你已经熟悉的基础类型(String/Int/Bool),就是.string()/.int()/.bool()这些基础case

分步实现你的示例JSON

先明确你需要的目标结构:

{
  "paymentMethods": ["paypal"],
  "contactInfo": {
    "email": "consumerUSA@paypal.com",
    "phone": "XXX-456-XXXX",
    "firstName": "John",
    "lastName": "Smith"
  }
}

1. 构建数组类型的paymentMethods

把字符串数组转成Freddy的JSON数组:

let paymentMethodsJSON = JSON.array([.string("paypal")])

如果是多元素数组(比如["paypal", "credit_card"]),直接在数组里追加对应的.string()元素即可。

2. 构建字典类型的contactInfo

嵌套对象本质是键值对字典,每个值都要转成对应的JSON类型:

let contactInfoJSON = JSON.dictionary([
    "email": .string("consumerUSA@paypal.com"),
    "phone": .string("XXX-456-XXXX"),
    "firstName": .string("John"),
    "lastName": .string("Smith")
])

3. 组合成完整的请求JSON

把上面两个部分整合为一个顶层JSON对象:

let requestJSON = JSON.dictionary([
    "paymentMethods": paymentMethodsJSON,
    "contactInfo": contactInfoJSON
])

4. 序列化为Data用于网络请求

最后把JSON转成Data,就能放到请求的HTTPBody里了:

do {
    let requestData = try requestJSON.serialize()
    // 这里将requestData赋值给你的URLRequest的httpBody即可
} catch {
    print("JSON序列化失败:\(error.localizedDescription)")
}

额外小技巧

如果遇到更复杂的结构(比如数组嵌套字典),思路完全一致:先构建最内层的JSON元素,再逐层向外组合成数组或字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:08:11