如何通过SwiftyJSON中的JSON数据循环

问题描述:

我有一个结构的JSON数据,我不知道如何使用for-loop和SwiftyJSON来获取“路径”和“更新”值的每个部分条目。任何人都可以帮忙谢谢。如何通过SwiftyJSON中的JSON数据循环

var jsonData = "{ 
     "css":[ 
     { 
      "path": "style.css", 
      "updated": "12432" 
     }, 
     { 
      "path": "base.css", 
      "updated": "34627" 
     }, 

     ], 
     "html":[ 
     { 
      "path": "home.htm", 
      "updated": "3223" 
     }, 
     { 
      "path": "about", 
      "updated": "3987" 
     } 
     ] 
    } 
" 

我试图代码回路

let json = JSON(jsonData) 

for () in json { 
    let filepath = 
    let updated = 

    // do searching another json to found file exists and updates 
} 

它的自述,在一个名为 “循环” 一节的一部分:https://github.com/SwiftyJSON/SwiftyJSON#loop

// If json is .Dictionary 
for (key,subJson):(String, JSON) in json { 
    //Do something you want 
} 

// If json is .Array 
// The `index` is 0..<json.count's string value 
for (index,subJson):(String, JSON) in json { 
    //Do something you want 
} 

适用于您的具体JSON结构:

let jsonData = """ 
    { 
     "css": [ 
     { 
      "path": "style.css", 
      "updated": "12432" 
     }, 
     { 
      "path": "base.css", 
      "updated": "34627" 
     } 
     ], 
     "html": [ 
     { 
      "path": "home.htm", 
      "updated": "3223" 
     }, 
     { 
      "path": "about", 
      "updated": "3987" 
     } 
     ] 
    } 
    """.data(using: .utf8)! 

    let json = JSON(data: jsonData) 

    for (_, subJson):(String, JSON) in json { 

     for (_, subJson):(String, JSON) in subJson { 
      let filepath = subJson["path"].stringValue 
      let updated = subJson["updated"].stringValue 

      print(filepath + " ~ " + updated) 
     } 
    } 

使用雨燕4可编码:

struct FileInfo: Decodable { 
    let path, updated: String 
} 

let dec = try! JSONDecoder().decode([String:[FileInfo]].self,from: jsonData) 
print(dec) 

根据您的JSON结构,使用此:

for (index,subJson):(String, JSON) in json { 
    print(index) // this prints "css" , "html" 
    for (key,subJson):(String, JSON) in subJson { 
     let filepath = subJson["path"] 
     let updated = subJson["updated"] 
    } 
}