json - 如何遍历一个对象数组并创建一个 json 对象?
问题描述
我有一个由 300 个对象组成的数组,每个对象包含许多参数,我想遍历数组以创建一个仅包含两个参数的 JSON 对象。我的对象是从数组中的这个 json 结构创建的:
"publicationId": 13,
"name": null,
"code": "FIGA_20190516",
"parutionDate": "2019-05-16",
"quadri": "FIGA",
"ratio": null,
"numero": "0",
"createdAt": "2019-06-18 21:29:21",
"nbPages": 0,
"search": 1,
"down": 1,
"thumb_height": 0,
"quartPageWidth": 0,
"quartPageHeight": 0,
"pdfHeight": "0",
"pdfWidth": "0",
"PDF": "2019-06-18 21:29:21",
"XML": null,
"SendKM": "2019-06-18 21:29:21",
"KM": null,
"Melody": null,
"filename": null,
"SendNormalize": null,
"Normalized": null,
"librelioSubTitle": null,
"SendProcessArticle": null,
"ProcessedArticles": null,
"melodyCallBackUrl": null,
"htmlMilibris": false,
"htmlHarry": false,
"sendProcessLibrelio": null,
"processedLibrelio": null,
"id": 77066,
"_solrDocument": {},
"_repository": "FIGA/2019/05/FIGA_20190516/"
我想循环遍历数组来创建一个带有这个结构的 JSON 对象:
"availableParutions" : {
id : createdAt,
id : createdAt,
id : createdAt
}
我真的很感谢你们的帮助!
解决方案
您可以在 Json 输出中创建一个表示所需数据的新结构
struct NewStruct: Encodable {
let id: Int
let createAt: String
}
此结构符合 Encodable ,因此可以将其编码为 json,但由于它非常简单,因此不需要额外的编码
然后你可以将你的大对象数组转换为NewStruct
使用数组map
let newArray = array.map { NewStruct(id: $0.id, createAt: $0.createdAt) }
如果我理解正确,这个数组应该是一个名为“availableParutions”的属性,所以让我们为 json 创建一个外部结构
struct Output: Codable {
let availableParutions: [NewStruct]
}
并加载它
let output = Output(availableParutions: newArray)
并对其进行编码
do {
let jsonData = try JSONEncoder().encode(output)
} catch {
print(error)
}
推荐阅读
- visual-studio-2017 - Alt + Up 在向上移动行时滚动屏幕
- javascript - 在 css 中使用 `rotate()` 使聊天消息在聊天应用程序中向上增长?
- python - 100% 的 gif 不能使用 moviepy 转换为 mp4
- javascript - Jest 'projects' 配置不读取子文件夹中的 .babelrc 和 webpack.config.json
- r - 在 r 中使用 igraph 向图形添加属性
- c++ - 创建哈希表,其中每个值都是许多值的向量
- python - 每个变量的转置
- flask - Flask WTF 表单:如果用户在 SelectMultipleField 中选择特定选项,是否可以显示新字段?
- python - 如何获得收益率指数?
- linux - 尝试使用自定义 DTB 构建 core-image-minimal 时出现 Makefile 错误