Ios 从另一个人的价值观创建新的Dict

Ios 从另一个人的价值观创建新的Dict,ios,json,swift,parsing,Ios,Json,Swift,Parsing,我有这样的JSON: { "SKzSjdBuOpO49wkPVaxtmLQoR0O2": { location: "-LB1fn5GQKTaIc-fGNPS" }, "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": { location: "-LB23izD7bp2NhO0UuIo" }, "FEScjelpNSR7vuVz1ha6Z6uSfF43": { location: "-LB1JL

我有这样的JSON:

{
    "SKzSjdBuOpO49wkPVaxtmLQoR0O2": {
        location: "-LB1fn5GQKTaIc-fGNPS"
    }, 
    "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": {
        location: "-LB23izD7bp2NhO0UuIo"
    }, 
    "FEScjelpNSR7vuVz1ha6Z6uSfF43": {
        location: "-LB1JLABuJO1NyJ-v2t_"
    }, 
    "mW7dGja6cRRB0d9uSIhg4f35PzC3": {
        location: "-LB5xqUvIjEgtW_FH_nG"
    }, 
    "GCnt0VKcqjT8bl2chw43nsntaZK2": {
        location: "-LB1n8ga9C0vCcZXD2Us"
    }
}
在我的
值[String:Any]
字典中。我想从它的值创建另一个字典来访问位置值。
您能帮我做这件事吗?

尽量不要在swift中使用
字典,而对于您的情况,您可以使用
[String:[String:String]]
键入数据,然后在数据中循环以获得所需的值。试试这个

  let dict = ["SKzSjdBuOpO49wkPVaxtmLQoR0O2": [
        "location" : "-LB1fn5GQKTaIc-fGNPS",
        ], "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": [
            "location" : "-LB23izD7bp2NhO0UuIo",
        ], "FEScjelpNSR7vuVz1ha6Z6uSfF43": [
            "location" : "-LB1JLABuJO1NyJ-v2t_",
        ], "mW7dGja6cRRB0d9uSIhg4f35PzC3": [
            "location" : "-LB5xqUvIjEgtW_FH_nG",
        ], "GCnt0VKcqjT8bl2chw43nsntaZK2": [
            "location" : "-LB1n8ga9C0vCcZXD2Us",
        ]]

    var newDict = [String: String]()
    for (key, val) in dict {
        newDict[key] = val["location"]
    }
    print(newDict)
输出:

[“SKzSjdBuOpO49wkPVaxtmLQoR0O2”:“-LB1fn5GQKTaIc fGNPS”, “s0ntSZP7mBQw1a8ua0E5PqazlqJ2”:“-LB23izD7bp2NhO0UuIo”, “FEScjelpNSR7vuVz1ha6Z6uSfF43”:“-LB1JLABuJO1NyJ-v2t”, “mW7dGja6cRRB0d9uSIhg4f35PzC3”:“-LB5xqUvIjEgtW_FH_nG”, “GCnt0VKcqjT8bl2chw43nsntaZK2”:“-LB1N8GA9C0VCCZD2US”]

编辑 对于您的案例,您可以尝试以下方法:

   let dict = ["SKzSjdBuOpO49wkPVaxtmLQoR0O2": [
        "location" : "-LB1fn5GQKTaIc-fGNPS",
        ], "s0ntSZP7mBQw1a8ua0E5PqazlqJ2": [
            "location" : "-LB23izD7bp2NhO0UuIo",
        ], "FEScjelpNSR7vuVz1ha6Z6uSfF43": [
            "location" : "-LB1JLABuJO1NyJ-v2t_",
        ], "mW7dGja6cRRB0d9uSIhg4f35PzC3": [
            "location" : "-LB5xqUvIjEgtW_FH_nG",
        ], "GCnt0VKcqjT8bl2chw43nsntaZK2": [
            "location" : "-LB1n8ga9C0vCcZXD2Us",
        ]] as Dictionary<String, Any>

    var newDict = [String: String]()
    for (key, val) in dict {
        if let value = val as? [String: String] {
            newDict[key] = value["location"]
        }
    }
    print(newDict)
let dict=[“skzsjdbouopo49wkpvaxtmlqor0o2”:[
“位置”:“-LB1fn5GQKTaIc fGNPS”,
]“s0ntSZP7mBQw1a8ua0E5PqazlqJ2”:[
“位置”:“-LB23izD7bp2NhO0UuIo”,
],“FEScjelpNSR7vuVz1ha6Z6uSfF43”:[
“位置”:“-LB1JLABuJO1NyJ-v2t_2;”,
]“mW7dGja6cRRB0d9uSIhg4f35PzC3”:[
“位置”:“-LB5xqUvIjEgtW_FH_nG”,
],“GCnt0VKcqjT8bl2chw43nsntaZK2”:[
“位置”:“-LB1n8ga9C0vCcZXD2Us”,
]]作为字典
var newDict=[String:String]()
用于dict中的(键,val){
如果let value=val as?[字符串:字符串]{
newDict[key]=值[“位置”]
}
}
打印(newDict)

如果主要目标只是访问值,并且类型固定为
[String:Any]
,请按以下方式执行:

if let info = dictionary["SKzSjdBuOpO49wkPVaxtmLQoR0O2"] as? [String : String] {
    let location = info["location"]
}

那么你的主要目标是访问位置值?@LukasWürzburger是的,我想获取位置值Hanks!对我来说效果很好:)问题是,我有[String:Any]这个外观来自Firebase的模型。我不能有带括号的位置:(