json - 在 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";
},
解决方案
您需要将返回的值转换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"])
}
推荐阅读
- tcl - 如何将可选参数传递给 tcl proc?
- javascript - Vue:如何检查嵌套输入是否为空
- python - 编写几个 PDE 方程并在 FiPy 中求解
- javascript - Javascript 仅在 html 上执行一个 window.onload 触发器资源
- tensorflow - 如何获取深度学习模型的输出激活值?
- r - 重新分类 rgee 中的图像像素(谷歌地球引擎中的 R 库)?
- python - pymc3 中的错误“模块‘pymc3’没有属性”
- java - 错误:从 Java 项目调用 kotlin 类时无法访问 KMappedMarker
- python - 迭代没有空格的单个字符串并在python中识别浮点数和整数
- android - 在 Firebase Auth 中合并 facebook 和 google 用户