从 json 数据值创建字典
Posted
技术标签:
【中文标题】从 json 数据值创建字典【英文标题】:create a dictionary from json data values 【发布时间】:2017-08-21 23:15:24 【问题描述】:我正在尝试从 2 个 json 值创建一个字典,到目前为止,我可以获得一个并附加到一个数组中,但我想将 2 个值组合为一个字典并将它们添加到一个数组中。这是我的函数目前的样子:
var menuButtonsArray: [String?] = []
func getAppMenuButtons()
guard let appJSON = appMenuJSON else return
guard let items = appJSON["items"] as? [[String: Any]] else
return
let filteredItem = items.filter$0["itemId"] as! String == "Items"[0]
if let data = filteredItem["data"] as? [[String:Any]]
for embeddedDict in data
for (key, value) in embeddedDict
if key == "name"
menuButtonsArray.append(value as! String)
print("key: \(value)")
这就是 json 的样子,它被缩短以适应这篇文章:
"itemId": "Items",
"data": [
"name": "Item1",
"url": "www.item1.com"
,
"name": "Item2",
"url": "www.item2.com"
,
"name": "Item2",
"url": "www.item2.com"
]
我要做的是创建一个字典数组,格式如下:
名称:网址
类似:
["item1":"www.item1.com","item2":"www.item2.com", "item3":"www.item3.com"]
【问题讨论】:
这只是一个字典,而不是字典数组。 【参考方案1】:下面是一个例子,告诉你如何使用map()
得到你想要的数组:
var data = [["name": "Item1","url": "www.item1.com"],
["name": "Item2","url": "www.item2.com"],
["name": "Item3","url": "www.item3.com"]]
var newData = data.map (dict: Dictionary) -> Dictionary<String, String> in
return [dict["name"]!:dict["url"]!]
这段代码应该给你
[[“Item1”:“www.item1.com”],[“Item2”:“www.item2.com”],[“Item3”: "www.item3.com"]]
作为输出
【讨论】:
【参考方案2】:首先,如果您需要Dictionary
,然后将您的结果声明为Dictionary
而不是Array
,您可以使用订阅将您的embeddedDict["name"]
用作resultDictionary
中的键,并将您的embeddedDict["url"]
用作你的resultDictionary
值
func getAppMenuButtons()
guard let appJSON = appMenuJSON else return
guard let items = appJSON["items"] as? [[String: Any]] else
return
let filteredItem = items.filter$0["itemId"] as! String == "Items"[0]
var resultDict : [String:String] = [:]
if let data = filteredItem["data"] as? [[String:Any]]
guard embeddedDict["name"] != nil && embeddedDict["url"] else
continue
for embeddedDict in data
resultDict[embeddedDict["name"]] = embeddedDict["url"]
debugPrint(resultDict) //in resultDict you will have your desired result
【讨论】:
以上是关于从 json 数据值创建字典的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中从 JSON 数据创建列表和字典 [重复]
将字典插入使用 Python 中的 JSON 创建的 SQL 数据库