gpt4 book ai didi

ios - 如何使用 Swifty Json 将 POST 请求中的 JSON 数据保存到字典中?

转载 作者:行者123 更新时间:2023-11-30 13:12:44 25 4
gpt4 key购买 nike

我能够在控制台中打印 json 数据,如下所示

{ 
"created_at" : "2016-07-21 20:46:53",
"name" : "PB Admin",
"id" : 1,
"updated_at" : "2016-07-21 12:46:53",
"lname" : "Admin",
"access_lvl" : 1,
"email" : "admin@admin.com",
"fname" : "PB"
}

,但无法将其保存到字典中。

POST请求的方法

private func makeHTTPPostRequest(path: String, body: NSDictionary) {
let request = NSMutableURLRequest(URL: NSURL(string: path)!)

// Set the method to POST
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.HTTPMethod = "POST"

do {
// Set the POST body for the request
let jsonBody = try! NSJSONSerialization.dataWithJSONObject(body, options: [])
request.HTTPBody = jsonBody
let session = NSURLSession.sharedSession()

let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
let json:JSON = JSON(data: data!)
print(json)//print on console

//i need to get the json data from here, but for some reason it would skip
//this method
self.parseJSON(json)
})

task.resume()
} catch {
// Create your personal error
//onCompletion(nil, nil)
}
}

此方法应将 json 数据保存到字典中

private func parseJSON(json: JSON) {

for(_, object) in json {

let createdAt = object["created_at"].stringValue
let name = object["name"].stringValue
let id = object["id"].stringValue
let updatedAt = object["updated_at"].stringValue
let lName = object["lname"].stringValue
let accessLvl = object["access_lvl"].stringValue
let email = object["email"].stringValue
let fname = object["fname"].stringValue

let obj = ["createdAt":createdAt, "name":name, "id":id, "updatedAt":updatedAt, "lName":lName, "accessLvl":accessLvl, "email":email, "fname":fname ]

objects.append(obj)//wherein objects is a string dictionary
}
}

每当我调试代码时,即使整个处理已完成,对象字典也始终为空。

最佳答案

您可以将 JSON 数据转换为 NSData,这样您就可以轻松地从 NSData 而不是 JSON 获取数据。

public class func jsonToNSData(json: AnyObject) -> NSData?{
return NSJSONSerialization.dataWithJSONObject(json, options: .allZeros, error: nil)
}

然后你可以创建一个返回 NSDictionary 的函数,如下所示:

func parseJSON(data: NSData) -> NSDictionary{
var dic: NSDictionary!
do {
boardsDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary

} catch let error as NSError {
print(error.localizedDescription)
print("Error could not parse JSON data, it's null maybe?!!")
}
//'\(jsonStr)'

return dic
}

最后一个:创建你的字典

let dic = parseJSON(jsonToNSData(YourJsonData)) as! NSDictionary

希望有帮助。

关于ios - 如何使用 Swifty Json 将 POST 请求中的 JSON 数据保存到字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com