Json 如何从字典数组中按键选取数据?

Json 如何从字典数组中按键选取数据?,json,swift,dictionary,Json,Swift,Dictionary,我尝试按键从数组字典中选取数据。我可以按索引号来做。但这是我的字典[[String:AnyObject]]当我从json反序列化到字典时,键是什么存储每个元素。因为字典设置了键值对,字典中的每个值都与一个唯一键相关联 这是我的Json: { "photos": { "page": 1, "pages": 1, "perpage": 500, "total": 36, "photo": [ { "id": "967120

我尝试按键从数组字典中选取数据。
我可以按索引号来做。
但这是我的字典
[[String:AnyObject]]
当我从json反序列化到字典时,键是什么存储每个元素。
因为字典设置了键值对,字典中的每个值都与一个唯一键相关联

这是我的Json:

{
  "photos":  {
    "page": 1,
    "pages": 1,
    "perpage": 500,
    "total": 36,
    "photo":  [
       {
        "id": "9671201784",
        "owner": "34507951@N07",
        "secret": "fb55a848bc",
        "server": "5494",
        "farm": 6,
        "title": "Burning Man 2013",
        "ispublic": 1,
        "isfriend": 0,
        "isfamily": 0,
        "url_m": "https://farm6.staticflickr.com/5494/9671201784_fb55a848bc.jpg",
        "height_m": "333",
        "width_m": "500",
        "is_primary": 1,
        "has_comment": 0
      },
       {
        "id": "16553346708",
        "owner": "116399434@N04",
        "secret": "092f304f0e",
        "server": "7630",
        "farm": 8,
        "title": "Burning Man",
        "ispublic": 1,
        "isfriend": 0,
        "isfamily": 0,
        "url_m": "https://farm8.staticflickr.com/7630/16553346708_092f304f0e.jpg",
        "height_m": "244",
        "width_m": "500",
        "is_primary": 0,
        "has_comment": 0
      }],
 "stat": "ok"
}
反序列化swift代码

if let photos = parsedResult[Constants.FlickerResponseKeys.Photos] as?[String : AnyObject ]{

    //  print(photos[Constants.FlickerResponseKeys.Photo])
    if let photo = photos[Constants.FlickerResponseKeys.Photo] as? [[String : AnyObject]] {
        print(photo[0])                    
    }
}

把这张照片放在里面

for (key, value) in photo {
 print(key)
 print(value)
}

您可以轻松地使用映射JSON。创建一个新的swift文件并放入以下代码

import UIKit
import ObjectMapper


class Photos: Mappable  {

var page : Int
var pages : Int
var perpage : Int
var total : Int

var photo : [MyPhoto]

required init?(_ map: Map) {

    page = 0
    pages = 0
    perpage = 0
    total = 0

    photo = []
}

func mapping(map: Map) {

    page                    <- map["photos.page"]
    pages                   <- map["photos.pages"]
    perpage                 <- map["photos.perpage"]
    total                   <- map["photos.total"]

    photo                   <- map["photos.photo"]
  }
}


class MyPhoto: Mappable {

var id : String
var owner : String
var secret : String
.
.
.

required init?(_ map: Map) {

    id = ""
    owner = ""
    secret = ""
}

func mapping(map: Map) {

    id                          <- map["id"]
    owner                       <- map["owner"]
    secret                      <- map["secret"]

}
}
导入UIKit
导入对象映射器
班级照片:可映射{
变量页:Int
变量页:Int
每页变量:Int
变量总计:Int
var photo:[MyPhoto]
必需的初始化(umap:map){
第页=0
页数=0
每页=0
总数=0
照片=[]
}
func映射(映射:映射){

页面谢谢。但我在swift中是新手。我不了解你的代码。如果你是新手,没问题。请转到ObjectMapper的链接,使用cocoaPods安装它,然后按照我的答案进行操作。如果你遇到了问题,请告诉我。我不建议手动映射JSON。因为如果在任何时候发生键更改或如果从json中删除,您的应用程序可能会崩溃。bro我了解照片,但..如何管理[[String:AnyObject]].AnyObject表示每个对象,但键是什么?…我想找到每个对象的每个字符串键检查我的编辑这应该给你
String
Value
不工作..应该抛出“表达式类型”[[String:AnyObject]]”不明确,没有更多上下文”错误
if let data = Mapper<Photos>().map(result){
    print(data.perpage)
    print(data.photo.count)
    // do something with your data
}