#ios #json #xcode #swift3
#iOS #json #xcode #swift3
Вопрос:
Я пытаюсь получить код состояния и поместить его в оператор 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)")
}
Ответ №1:
Вы забыли «:» после "status"
let str = "{"names": ["Bob", "Tim", "Tina"],"status":["200"],"message":"User has been created","id":null,"username":"asdf"}"//"{"names": ["Bob", "Tim", "Tina"]}"
РЕДАКТИРОВАТЬ: см. Комментарий OP ниже
Он возвращает [«статус»], и это совершенно нормально, потому что ваш json
объект является Array
of String
( [String]
) . Чтобы получить 200
, вам нужно получить первый объект этого массива :
if let array = json["status"] as? [String]
{
let code = array.first // Here, code should be 200
}
Комментарии:
1. Ах да, это была опечатка, когда я писал вопрос. В моем коде есть двоеточие, поэтому я все равно получаю ответ [«200»]