JSON :
{
"11/08/22":[
{
"Bill Gates":"Microsoft",
"Steve Balmer":"Microsoft"
}],
"13/08/22":[
{
"Tim Cook":"Apple",
"Jony Ive":"Apple"
}]
}
Swift Code :
let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
do {
if let jsonDate = data, let jsonResult = try NSJSONSerialization.JSONObjectWithData(jsonDate, options: []) as? NSDictionary {
print(jsonResult)
//Get Result into Seperate Arrays
let keys = jsonResult.flatMap(){ $0.0 as? String }
let values = jsonResult.flatMap(){ $0.1 as? String }
}
} catch let error as NSError {
print(error)
}
})
jsonQuery.resume()
要求:
如果我从程序" 11/08/22" 传递,我应该能够以字符串数组>的形式获取所有键和值只有名为" 11/08/22" 的数组。
更好的解释:
它应该进入11/08/22,它应该检索"比尔盖茨",#34;史蒂夫巴尔默"作为Keys和" Microsoft"作为两个独立数组中的值
答案 0 :(得分:0)
对于这个例子,让我们使用一个数组来收集人员和一组收集公司:
var people: [String] = []
var companies: Set<String> = []
使用&#34; 11/08/22&#34;下载JSON词典键并将结果转换为字典数组。
循环遍历此数组并在循环中,将键添加到people数组并将值插入公司集中。
let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
do {
if let jsonDate = data, let jsonResult = try NSJSONSerialization.JSONObjectWithData(jsonDate, options: []) as? NSDictionary {
if let dateContent = jsonResult["11/08/22"] as? [[String:String]] {
for group in dateContent {
people.appendContentsOf(group.keys)
group.values.forEach { companies.insert($0) }
}
}
}
} catch let error as NSError {
print(error)
}
})
jsonQuery.resume()
print(people)
print(companies)
结果:
[&#34; Steve Balmer&#34;,&#34;比尔盖茨&#34;]
[&#34;微软&#34;]
答案 1 :(得分:0)
let keys=jsonResult["11/08/22"]?.allKeys as? [String];
let values=jsonResult["11/08/22"]?.allValues as? [String];
这很简单