使用 SwiftyJSON 和 Alamofire 循环遍历 JSON

Posted

技术标签:

【中文标题】使用 SwiftyJSON 和 Alamofire 循环遍历 JSON【英文标题】:Loop through JSON with SwiftyJSON and Alamofire 【发布时间】:2016-01-28 15:08:48 【问题描述】:

我已经查看了其他问题,但我似乎无法找到一个可以回答我的问题的问题。

我有这个 Json 文件:

[
"posts",

  "2015": [
    "post title one"
  ],
  "2016": [
    "post title one",
    "post title two"
  ]

]

我的 Swift 文件中有这段代码:

Alamofire.request(.GET, url).validate().responseJSON  response in
        switch response.result 
        case .Success:
            if let value = response.result.value 
                let json = JSON(value)
                for (key, subJson) in json["posts"] 
                    if let year = subJson.string 
                        print(year)
                    
                
            
        case .Failure(let error):
            print(error)
        
    

我可以从服务器获取json ok。

在这一行:

for (key, subJson) in json["posts"] 

我得到这个错误:

从未使用过不可变值“key”,请考虑使用“_”重放或删除它

我尝试过,并尝试将其删除 - 控制台中仍然没有显示任何内容。

另外,在这一行:

if let year = subJson.string 

我收到此错误:

元组类型'Element'(又名'(String, JSON)')的值没有成员'string'

我想做的是这样的:

遍历所有这些年,并将它们放在一个 uitableview 中。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

这样做:

for (_, subJson) in json["posts"] 
    for (year, content) in subJson 
        print(year)
    

第一个错误只是一个警告,这意味着您从不使用“key”变量,因此编译器建议不要标记它。在我的示例中,您将收到针对 content 的类似警告,因为我们没有使用它:要么使用它,要么将其替换为 _

请注意,我是从您的代码中推断出您的 JSON 格式,因为您的 JSON sn-p 看起来确实无效/不是实际的。

更新:

for (_, subJson) in json["posts"] 
    for (year, content) in subJson 
        print(year)
        for (_, title) in content 
            print(title)
        
    

【讨论】:

JSON 应该是什么样的?我是用php生成的,所以可能是我做错了.. 现在就试试你的解决方案。 我得到不可变值 'content' 从未使用过,考虑使用 '_' 重播或删除它 您是否完整阅读了我的回答?我告诉过你这个,啊哈。 :D 顺便说一句,这是一个警告,而不是实际错误。 这是因为您在问题中显示的 JSON 无效,我只是将第一项作为其余项的键,这看起来合乎逻辑并且与您在代码中尝试的类似。

以上是关于使用 SwiftyJSON 和 Alamofire 循环遍历 JSON的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJson 和 Alamofire 使用的解码结构

如何使用 Alamofire 和 SwiftyJSON 正确解析 JSON

如何将 RxSwift 与 AlamoFire 和 SwiftyJSON 一起使用?

无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON

使用 Alamofire 和 SwiftyJSON 时对 JSON 进行排序

使用 SwiftyJSON(和 Alamofire)解析 JSON 值