如何在 SwiftyJSON 中循环遍历 JSON 数据

How to loop through JSON data in SwiftyJSON

我有一个具有结构的 JSON 数据,但我不知道如何使用 SwiftyJSON 的 for 循环来获取 "path" 和 [=20] 的每个部分条目=] 值。任何人都可以帮忙吗?谢谢

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

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

我尝试编写部分 for-loop

let json = JSON(jsonData)

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

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

它在自述文件中,在名为 "loop" 的部分下: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)
        }
    }

使用 Swift 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"]
    }
}