如何在 Swift 中将数组添加到我的 JSON 字典
Posted
技术标签:
【中文标题】如何在 Swift 中将数组添加到我的 JSON 字典【英文标题】:How do I add an array to my JSON dictionary in Swift 【发布时间】:2015-03-02 15:45:46 【问题描述】:我在我的 ios 应用程序中使用 swift,当涉及到数组时,我需要帮助来创建发布请求。
我需要在 http 请求的正文中发布一些类似于此 JSON 的内容:
"someProperty1":"someValue1",
"someProperty2":"someValue2",
"someArray":[
"name":"nameValue1", "email":"emailValue1", "anotherProperty":"anotherValue1",
"name":"nameValue2", "email":"emailValue2", "anotherProperty":"anotherValue2",
"name":"nameValue2", "email":"emailValue2", "anotherProperty":"anotherValue2",
]
到目前为止,我已经成功地为看起来像这样的简单请求创建了一个字典:
"someProperty1":"someValue1",
"someProperty2":"someValue2"
然后使用
NSJSONSerialization.dataWithJSONObject(requestBody, options: nil, error: &err)
其中“requestBody”是一个字典
我在向这个请求中添加一个数组时没有成功,有人可以提供一个例子来说明它的外观吗?谢谢
【问题讨论】:
我建议你使用 SwiftyJSON 来简化。 @Dato'MohammadNurdin 我的项目中确实有 SwiftyJson。它非常适合解析我收到的 JSON。我不知道 swiftyJSON 是如何促进 POST JSON 的 【参考方案1】:您可以将您的 requestBody 字典定义为包含 AnyObject
作为值,然后按照您的预期添加数组:
let arr: [String] = ["hi", "ho"]
let body: [String: AnyObject] = ["someProperty1":"someValue1", "someProperty2":"someValue2", "someProperty3":arr]
let json = NSJSONSerialization.dataWithJSONObject(body, options: nil, error: nil)
println(NSString(data: json!, encoding: NSUTF8StringEncoding))
【讨论】:
【参考方案2】:好吧,你可以这样写:
var paramArr = [["name":"nameValue1", "email":"emailValue1", "anotherProperty":"anotherValue1"], ["name":"nameValue2", "email":"emailValue2", "anotherProperty":"anotherValue2"],["name":"nameValue3", "email":"emailValue3", "anotherProperty":"anotherValue3"]]
var requestBody = [
"someProperty1":"someValue1",
"someProperty2":"someValue2",
"someArray":paramArr]
顺便说一下,请求参数太复杂了,建议你创建数据模型来解决这个问题。
第一个模型名为requestParam
,第二个模型名为user
。并重写 set 方法使someArr
成为user
类(对不起,我可以在 OC 中使用它,但不能在 Swift 中使用)
requestParam.swift
var someProperty1: String!
var someProperty2: String!
var someArray: NSArray!
user.swift
var name: String!
var email: String!
var anotherProperty: String!
然后你可以把所有的参数都变成requestBody模型
然后使用一些 JSON 库来字典
【讨论】:
【参考方案3】:我建议你使用Alamofire
和SwiftyJSON
的组合。
import UIKit
import Alamofire
import Haneke
class ViewController: UIViewController
var datas: [JSON] = []
override func viewDidLoad()
super.viewDidLoad()
Alamofire.request(.GET, "http://xxxxx/ALL").responseJSON (request, response, json, error) in
if json != nil
if let data = jsonObj["someArray"].arrayValue as [JSON]?
self.datas = data
【讨论】:
以上是关于如何在 Swift 中将数组添加到我的 JSON 字典的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 3 中将 UIButton 添加到我的 UITableViewCell 中?