【问题标题】:Parse JSON in Swift 4 from Youtube and Alamofire - Nested JSON在 Swift 4 中解析来自 Youtube 和 Alamofire 的 JSON - 嵌套 JSON
【发布时间】:2019-03-19 08:28:16
【问题描述】:

我仍在学习在 Swift 4 中解析 JSON,我正在研究的最新示例证明有点复杂,尽管看起来可能很简单。

我通过...访问日期。

if let JSON = response.result.value as? NSDictionary {
                print(JSON)
                let value = JSON["rows"]
                print(value!)
            }

但是我只想访问 (( )) 中的值。

{
    columnHeaders =     (
                {
            columnType = METRIC;
            dataType = INTEGER;
            name = estimatedMinutesWatched;
        }
    );
    kind = "youtubeAnalytics#resultTable";
    rows =     (
                (
            20
        )
    );
}

在这种情况下,我试图访问值 20。当我放入 JSON 验证器时,我收到“密钥不存在”的错误。

但同样,值 20 在 JSON 中是双重嵌套的。

这是来自 Youtube 分析 API 的摘录。

【问题讨论】:

  • 您显示的数据采用NSDictionaryNSArray 中使用的类似plist 的格式,而不是JSON 文本。您最好将原始 JSON 以及获取该数据的代码显示为文本。
  • @OOPer 我看到它是一个字典,但是我现在面临的困难是访问包含在 (()) 中的值。我可以使用....if let JSON = response.result.value as? NSDictionary { print(JSON) let value = JSON["rows"] print(value!) } 访问行
  • 但是我现在面临的困难是访问包含在 (()) 中的值 许多开发人员不习惯类似 plist 的符号,所以 将原始 JSON 显示为文本 将帮助您更快地获得更好的答案。您可能会得到答案,只是可能需要更长的时间。
  • 编辑您的问题以显示原始 JSON。

标签: swift youtube youtube-api swift4 youtube-data-api


【解决方案1】:

看起来您的内容是一个带有键“rows”的字典,其中包含 Ints 的数组。

模拟您的数据:

let rows = ["rows": [[20]]] as NSDictionary

if let row = rows["rows"],
    let rowAsArray = row as? [[Int]] {
    print(row)
    print(rowAsArray[0][0])
}

第一个打印语句输出:

(
        (
        20
    )
)

这看起来像你的输出格式。

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    相关资源
    最近更新 更多