Разбор JSON данных в Swift из вызова API «Значение типа Any?» не имеет индексов " - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь проанализировать некоторые JSON данные, возвращенные при вызове API. Путь, по которому я хочу двигаться, - это медиа> лица> теги. Когда я перехожу к мультимедиа, он работает, но когда я добавляю лица, я получаю «Значение типа« Любой? ». не имеет индексов "ошибка.

Я знаю, что это уже рассматривалось ранее в Stackoverflow, но я не могу понять, что не так. Любая помощь приветствуется!

let dictionary = try JSONSerialization.jsonObject(with: data!, options:.mutableContainers) as? [String:Any];

//                        print(dictionary!["media"]) //this line works 

                        print(dictionary!["media"]["faces"]) // this line does not work 

Данные, возвращаемые API, выглядят примерно так

Optional({
    checksum = 44efb3256385bfe62425c5fde195a3352e814ff6d900058e47a07b2cd7654252;
    duration = "00:00:00";
    faces =     (
                {
            angle = "1.2222";
            "appearance_id" = 0;
            "detection_score" = 1;
            duration = "00:00:00";
            "face_uuid" = "78338d20-9ced-11ea-b153-0cc47a6c4dbd";
            height = "74.31999999999999";
            "media_uuid" = "fec83ac3-de00-44f0-ad5b-e1e990a29a8c";
            "person_id" = "";
            points =             (
                                {
                    name = "basic eye left";
                    type = 512;
                    x = "85.16";
                    y = "86.62";
                },

1 Ответ

1 голос
/ 29 мая 2020

Вам нужно преобразовать значение, возвращаемое из dictionary!["media"], как другое Dictionary, чтобы иметь возможность сделать это. Попробуйте это:

if let data = data,
    let dictionary = try JSONSerialization.jsonObject(with: data, options:.mutableContainers) as? [String: Any],
    let media = dictionary["media"] as? [String: Any] {
    print(media["faces"])
}
...