簡體   English   中英

如何將json響應存儲到變量中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM