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
相关产品推荐
相关产品推荐

