Я новичок в Swift и JSON, и у меня проблемы. Я посмотрел на все виды Q & A здесь и попытался включить совет, но я не могу сделать это правильно.Быстрая ошибка сериализации JSON
У меня есть сервер, создающий JSON, который в порядке в соответствии с проверкой JSON lint checker (http://jsonlint.com).
Использование браузера, реакция заключается в следующем:
[{ "PostalCode": "NW4 2JL"}, { "PostalCode": "NW4 2ES"}, { "PostalCode": "NW4 3XP"} , {«PostalCode»: «NW4 4DU»}, {«Почтовый код»: «NW4 2HH»}, {«Почтовый код»: «NW4 2DR»}, {«Почтовый код»: «NW4 2DX»}]
Xcode , однако, дает мне эту ошибку:
Ошибка, извините, не удалось разобрать JSON: Необязательно ([{"PostalCode": "NW4 2JL"}, {"PostalCode": "NW4 2ES"}, {"PostalCode" : «NW4 3XP»}, {«PostalCode»: «NW4 4DU»}, {«Почтовый код»: «NW4 2HH»}, {«Почтовый код»: «NW4 2DR»}, {«Почтовый код»: «NW4 2DX»} ])
Что меня озадачивает, и я не могу найти объяснения, это часть «Необязательный()». До этого оператор ошибки, как я написал, в строке 12 (единственное сообщение, которое включает слово «извините»). JSON внутри «()» выглядит отлично.
Может ли кто-нибудь сообщить, что я сделал не так, или, по крайней мере, откуда появился текст «Необязательный()»?
Это соответствующая часть моего кода:
let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else {
print("no data found: \(error)")
return
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as? NSDictionary {
let success = json["success"] as? Int
print("Success: \(success)")
} else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error, sorry, could not parse JSON: \(jsonStr)")
}
} catch let parseError {
print(parseError)
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
}
@ Эрик D: опции могут быть преходящими тоже, я полагаю, что они есть для соображений обратной совместимости, а не потому, что они умны. –
@IanBell Опционы - ключевая концепция в Swift, сказал Крис Латттнер много раз. Скоро они не пойдут. :) – Moritz
Ничего себе, этот сайт хорош. Как только я разместил это, я нашел ответ в другом месте (http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization). Мне очень жаль. Решение заключалось в том, чтобы использовать NSArray вместо NSDictionary, так как ответ был массивом. – Denis