Swift中如何将Tag对象的ID数组正确存入JSON?
问题解决:将Tag的ID数组正确存入JSON
错误原因分析
- 第一种方法的问题:你手动把ID拼接成了字符串格式(比如
"[2,6]"),所以最终JSON里的tags字段是字符串类型,而非数组类型。 - 第二种方法的问题:
ForEach是SwiftUI专属的视图构建组件,只能在SwiftUI的View结构体内部使用,不能在普通的Swift逻辑代码里用来做循环遍历,这就是报错的原因。
正确实现方式
直接用map方法把[Tag]转换为[Int](ID数组),然后赋值给eventObject的tags字段即可。当后续将eventObject序列化为JSON时,数组会自动被处理成正确的[2,6]格式:
if let itemTags = item.tags, !itemTags.isEmpty { eventObject["tags"] = itemTags.map { $0.id } }
补充说明
如果后续需要把eventObject正式序列化为JSON数据,可以用JSONSerialization完成,示例代码如下:
do { let jsonData = try JSONSerialization.data(withJSONObject: eventObject, options: .prettyPrinted) // 可将jsonData转为字符串或发送至服务器等 } catch { print("JSON序列化失败:\(error)") }
内容的提问来源于stack exchange,提问作者Luuk D. Jansen
相关产品推荐
相关产品推荐

