从 Json 数据中分组,其中包含 Swift 4 中的字典数组

Posted

技术标签:

【中文标题】从 Json 数据中分组,其中包含 Swift 4 中的字典数组【英文标题】:Grouping from Json data, which contain array of dictionaries in Swift 4 【发布时间】:2018-06-13 13:18:26 【问题描述】:

我有本地 json 文件,其中包含字典数组。我想根据 json 下面的键名进行分组。表示一组同名。请告诉我我怎样才能做到这一点。谢谢你。

Json 数据:

[ “名称”:“ABC”, “数字”:123, “分数”:78 , “名称”:“xyz”, “数字”:456, “分数”:50 , “名称”:“ABC”, “数字”:789, “分数”:78 ]

代码:

code and error message

【问题讨论】:

“组”是什么意思?您的意思是按名称值对它们进行排序吗? 我的意思是一侧的同名值。 【参考方案1】:

init(grouping:by:)

你应该在闭包中返回 name 键的值。

 let arr = [ [ "name": "Abc", "number": 123, "marks": 78 ], [ "name": "xyz", "number": 456, "marks": 50 ], [ "name": "Abc", "number": 789, "marks": 78 ] ]
 let dict = Dictionary(grouping: arr)  $0["name"] as! String 
 print(dict)

//["Abc": [["name": "Abc", "number": 123, "marks": 78], ["name": "Abc", "number": 789, "marks": 78]], "xyz": [["name": "xyz", "number": 456, "marks": 50]]]

【讨论】:

我也是这样做的。我收到错误。我的代码有什么问题?你能识别吗? @user3516627 声明你的数组内容的真正字典类型,而不是Any,这个解决方案就可以了。 我无法从中提取数据。我的意思是如何从每个集合(“Abc”和“xyz”)中提取值并对该特定组的成员进行操作并将其存储在数组或类似的位置的一个位置。

以上是关于从 Json 数据中分组,其中包含 Swift 4 中的字典数组的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 从 JSON 中获取相关数据

如何在 swift 4 中使用 JSONDecoder 从嵌套 JSON 中获取数据?

从 Swift 中的 Socket 获取响应

处理包含多种类型的 JSON 数组 - Swift 4 Decodable

NSSortDescriptor 从 Swift 4 的核心数据中获取密钥

如何通过 JSON 将数组从 php 解压到 Swift