Разбор данных JSON в Swift3

-2

Я пытаюсь проанализировать данные 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
                    }
                }

Я пробовал несколько разные способы, но я не мог найти решение. Я не понимаю, в чем проблема. Может ли кто-нибудь дать мне руку? Заранее спасибо.

  • 2
    Значение ключа "страна" не словарь ...
  • 0
    Привет @MartinR, если я использую String не работает
Показать ещё 2 комментария
Теги:
parsing

2 ответа

3
Лучший ответ

Ключ "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
                }
            }
  • 0
    Спасибо за помощь. Я пытался раньше с использованием String и не работал. Вот почему я был в замешательстве.
  • 0
    Это работает сейчас?
Показать ещё 2 комментария
2

см. примечание @MartinR. Он абсолютно прав и основан на этом также @Nishant Bhindi ответ.

ПРЕДУПРЕЖДЕНИЕ !!!!

от JSON ORG

Строка представляет собой последовательность из нуля или более символов Юникода, заключенных в двойные кавычки, с использованием обратных слэшей.

Кажется, что вы пытаетесь разобрать недействительный JSON...

  • 3
    То, что OP показывает как «фрагмент моего файла JSON», не является JSON. Это вывод print(jsonResult) , то есть вывод вывода NSDictionary, и поэтому двойных кавычек нет.
  • 0
    @MartinR он написал: «Привет, MartinR, если я использую строку, она тоже не работает», но, возможно, я его не понял, и он попытался условно разыграть как строку что-то еще :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню