簡體   English   中英

xcode swift 3.0 解析 JSON 響應

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

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