[英]xcode swift 3.0 parse JSON response
我正在嘗試獲取狀態代碼並將其放入 if 語句中。 此代碼將在 xCode 游樂場中運行。
現在狀態返回為["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)")
}
您可以嘗試以下解決方法:
let responseString = Optional("{\"status\":\"200\",\"message\":\"User has been created\",\"id\":null,\"username\":\"asdf\"}")
let responseData = responseString?.data(using: .utf8)
let dict: Dictionary<String, Any> = try JSONSerialization.jsonObject(with: responseData!, options: []) as! Dictionary<String, Any>
let status = dict["status"] // optional value stored with "status" key in Dictionary
似乎實際上,Swift 3 拒絕使用以下方法進行編譯:
let dict: Dictionary<String, Any> = try JSONSerialization.jsonObject(with: responseString?.data(using: .utf8)!, options: []) as! Dictionary<String, Any>
Swift 3 聲稱 responseString?.data(using: .utf8)! 應該打開,盡管它已經打開了。
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: .utf8)
do {
let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String: AnyObject]
let status = json["status"] as? [String]
let yourValue = status?[0]
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
我只是在 json 格式的狀態后添加 (:) 無效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.