繁体   English   中英

xCode、Swift 3.0 JSON 解析字符串响应

[英]xCode, Swift 3.0 JSON parse string response

我正在尝试获取状态代码并将其放入 if 语句中。 此代码将在 Xcode Playground 中运行。

现在状态返回为["200"]并用方括号括起来。 如果我删除括号,它会返回nil

如何将状态返回为200并将其放入 if 语句中?

import Foundation

let str = "{\"names\": [\"Bob\", \"Tim\", \"Tina\"],\"status\":[\"200\"],\"message\":\"User has been  created\",\"id\":null,\"username\":\"asdf\"}"//"{\"names\": [\"Bob\", \"Tim\", \"Tina\"]}"
let data = str.data(using: String.Encoding.utf8, allowLossyConversion: false)!

do {
    let json = try JSONSerialization.jsonObject(with: data, options: []) as! [String: AnyObject]
    let status = json["status"] as? [String]

} catch let error as NSError {
     print("Failed to load: \(error.localizedDescription)")
}

您忘记了\\"status\\" ”后的“ \\"status\\"

let str = "{\"names\": [\"Bob\", \"Tim\", \"Tina\"],\"status\":[\"200\"],\"message\":\"User has been  created\",\"id\":null,\"username\":\"asdf\"}"//"{\"names\": [\"Bob\", \"Tim\", \"Tina\"]}"

编辑:见下面OP的评论

它返回["status"] ,这是完全正常的,因为您的json对象是一个String Array ( [String] )。 要获得200您必须获取此数组的第一个对象:

if let array = json["status"] as? [String]
{
   let code = array.first // Here, code should be 200
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM