arrays - 将 JSON 对象转换为新数组
问题描述
如何使用 Swift 将 JSON 结构转换为新数组?
初始 JSON
{
"group1": {
"1/30/21": 100,
"1/31/21": 200
},
"group2": {
"1/30/21": 200,
"1/31/21": 300
},
"group3": {
"1/30/21": 300,
"1/31/21": 500
}
}
我想转换的数组如下:
[
{
"group1": 100,
"group2": 200,
"group3": 300,
"date": "1/30/21",
},
{
"group1": 200,
"group2": 300,
"group3": 500,
"date": "1/31/21",
}
]
解决方案
首先用于JSONSerialization
将json转换为字典
let dictionary = try JSONSerialization.jsonObject(with: jsonIn.data(using: .utf8)!) as! [String: [String: Int]]
然后分两步转换为预期格式,首先创建一个字典,其中日期是键,组和数字(作为元组)是值
var temp = [String: [(String, Int)]]()
dictionary.forEach { key, value in
for (innerKey, innerValue) in value {
temp[innerKey, default: []].append((key, innerValue))
}
}
然后使用这个字典创建字典数组
let output = temp.map { (key, tuples) -> [String: Any] in
var result = [String: Any]()
for tuple in tuples {
result[tuple.0] = tuple.1
}
result["date"] = key
return result
}
然后回到json
let jsonOut = try JSONSerialization.data(withJSONObject: output)
推荐阅读
- bitmap - Inno 在背景图像上设置“系统资源不足”
- python-3.x - 如何从 N 个数字列表中生成 k 个数字的组合(其中 N 可能是 >>> k)?
- c - 从文件读取到结构仅写入数组中的第一个结构
- python - 使用没有外部库的 Q-learning 模型
- android - 复合组件不恢复视图状态
- php - Laravel Route 进入 Controller 但不显示数据
- javascript - 防止点击底层div,反应js
- java - Spring Boot 安全性不会重定向配置(HttpSecurity http)方法上的 oauth/authorize 调用
- javascript - 每张幻灯片的水平 ScrollMagic 容器中的视差内容结结巴巴
- python - 如何对中间有浮点数的字符串列表进行排序?