Я пытаюсь проанализировать данные JSON в Swift3. Когда я пытаюсь распечатать весь jsonResult
отлично печатает весь файл JSON. Однако, когда я пытаюсь разобрать это, я сталкиваюсь с проблемами.
Это консольный вывод моего файла JSON:
{
city = {
coord = {
lat = "37.323";
lon = "-122.0322";
};
country = US;
id = 5341145;
name = Cupertino;
population = 58302;
};
}
Это мой код для анализа файла:
if let jsonResult = try JSONSerialization.jsonObject(with: data!) as? NSDictionary{
print(jsonResult) //this prints all the file OK
if let city = jsonResult["city"] as? Dictionary<String, AnyObject>{
if let country = city["country"] as? Dictionary<String, AnyObject>{
print(country) //this is not printing anything
}
}
Я пробовал несколько разные способы, но я не мог найти решение. Я не понимаю, в чем проблема. Может ли кто-нибудь дать мне руку? Заранее спасибо.
Ключ "country" в вашем json - это не словарь, поэтому вы не получаете никакого вывода.
Попробуйте ниже код, он будет работать
if let jsonResult = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String:Any>{
print(jsonResult) //this prints all the file OK
if let city = jsonResult["city"] as? Dictionary<String, Any>{
print(city["country"]) // to check what is the output
if let country = city["country"] as? String{
print(country) //this is not printing anything
}
}
см. примечание @MartinR. Он абсолютно прав и основан на этом также @Nishant Bhindi ответ.
ПРЕДУПРЕЖДЕНИЕ !!!!
от JSON ORG
Строка представляет собой последовательность из нуля или более символов Юникода, заключенных в двойные кавычки, с использованием обратных слэшей.
Кажется, что вы пытаетесь разобрать недействительный JSON...
print(jsonResult)
, то есть вывод вывода NSDictionary, и поэтому двойных кавычек нет.
String
не работает