首页 > 解决方案 > 在 Swift 中从 API 调用解析 JSON 数据“'Any?' 类型的值” 没有下标”

问题描述

我正在尝试解析从 API 调用返回的一些 JSON 数据。我要导航的路径是媒体 > 面孔 > 标签。当我导航到媒体时,它可以工作,但是当我添加面孔时,我收到“'Any'类型的值?' 没有下标”错误。

我知道这已经在 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";
                },

标签: jsonswiftxcodeparsing

解决方案


您需要将返回的值转换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"])
}

推荐阅读