gpt4 book ai didi

arrays - Swift 3 - 无法弄清楚如何从 jsonArray 创建 json 对象

转载 作者:行者123 更新时间:2023-11-28 08:18:45 24 4
gpt4 key购买 nike

所以我在使用 Swift 3 时遇到了问题。我正在向我的服务器发送一个 get 调用,然后我得到了我期望的数据。但是我不知道如何从 jsonArray 创建对象,以便我可以轻松访问数据。

到目前为止,这是我的功能:

func getAllRoles(refreshToken: String){
print("vi kører getAllRoles \(refreshToken)")

let urlPath = "http://keebintest-pagh.rhcloud.com/api/users/allroles/"
let url = NSURL(string: urlPath)
let session = URLSession.shared
let request = NSMutableURLRequest(url: url as! URL)

request.addValue(refreshToken, forHTTPHeaderField: "refreshToken")
request.httpMethod = "GET"



let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in
print("Task completed \(data) and response is xxxx")

let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString!)")



// Her laver vi data om til en dictionary
// let s = (try! JSONSerialization.jsonObject(with: data!, options: .mutableContainers)) as! String
// print("det virkede?")
// print(s)

// var json: Array<String>!
// do {
// json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as? Array
// } catch {
// print(error)
// }
//
// print("her er mit json \(json[0])")






})
task.resume()
}

这是我的控制台日志的样子:

Task completed Optional(56 bytes) and response is xxxx
responseString = [{"id":1,"roleName":"Admin"},{"id":2,"roleName":"User"}]
here is my json {
id = 2;
roleName = User;
}

很明显我得到了我的数据,它在一个我可以访问的数组中。但是我无法弄清楚如何从数组中的每一个创建 jsonObjects 。有人可以帮忙吗?

提前致谢!

最佳答案

您的问题是响应不是字符串数组 ( Array<String> ),它是 Dictionary<String,Any> 的数组(Array<Dictionary<String,Any>> 或更简单的 [[String:Any]])。尝试以下操作:

var json: [[String:Any]]!
do {
json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [[String:Any]]
} catch {
print(error)
}

虽然我建议不要使用“!”并使用可选值或默认值代替:

var json:[[String:Any]] = []
if let data = data, let jsonResponse = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [[String:Any]] {
json = jsonResponse
}

现在至于您想要的“json 对象”,在 swift 中最接近的是字典,在我的示例中它位于 json 数组中。所以json[0]["id"]将返回 1。

关于arrays - Swift 3 - 无法弄清楚如何从 jsonArray 创建 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854381/

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