[英]How to store json response into variable?
我從api得到json響應。 我需要使用模型存儲到變量中,如何存儲?
struct StructLogin {
var status:String?
var contentarr = [content]()
}
struct content {
var AuthoToken:String?
var user_name:String?
var user_type:String?
}
let jsonResponse = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
StructLoginObj.status = jsonResponse!["status"] as? String
StructLoginObj.contentarr = contentArray
contentObj.AuthoToken = jsonResponse!["auth_token"] as? String
contentObj.user_name = jsonResponse!["user_name"] as? String
contentObj.user_type = jsonResponse!["user_type"] as? String
{“狀態”:“ 200”,“內容”:{“ user_type”:“ 1”,“用戶名”:“超級管理員”,“ auth_token”:“ 7500b440c0f8035e864e1541c650b888”}}
使用Codable
將您的JSON
響應解析為一個對象。
struct Login: Codable {
var status: String?
var content:Content?
}
struct Content: Codable {
var auth_token:String?
var user_name:String?
var user_type:String?
}
讓我們以您提供的JSON
響應為例。
let str = """
{"status":"200","content":{"user_type":"1","user_name":"Super Admin","auth_token":"7500b440c0f8035e864e1541c650b888"}}
"""
由於我們沒有來自API
的實際Data
,因此我們將str
轉換為data
以進行解析。
if let data = str.data(using: .utf8) {
let login = try? JSONDecoder().decode(Login.self, from: data)
print(login)
}
您需要使用Codable
輕松將對象轉換為數據,而且您的content
鍵是字典而不是數組
救:
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let res = try! decoder.decode(Root.self, from: data)
print(res.content)
let data = try! JSONEncoder().encode(res.content)
// save data anywhere e.x userDefaults if it's a settings
UserDefaults.shared.set(data,forKey:"User")
讀:
if let data = UserDefaults.shared.data(forKey:"User") {
print(data)
}
struct Root: Codable {
let status: String
let content: Content
}
struct Content: Codable {
let userType, userName, authToken: String
}
您可以使用JSON.parse()
方法將API
返回值轉換為JavaScript
對象:
let result = JSON.parse(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.