如何在 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】:

我建议你使用AlamofireSwiftyJSON的组合。

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 中?

如何在swift中将逗号添加到数字?

如何在 Swift 中将 JSON 转换为数据类型?

如何在 Swift 4.0 中将 JSON 输出设置为 UILabel?

如何将嵌套数组添加到我的模型类

如何在swift中将json数组保存和检索到用户默认值?