Swift 4中如何向JSON数组类型的值追加数据?
解决将图片字典存入JSON对象的images数组问题
嘿,我看你遇到的问题是没法把图片字典塞进JSON对象的images数组里,其实问题出在两个小地方,我给你一步步拆解解决:
第一步:把JSON对象改成可变的
你现在用let声明的jsonObject是不可变字典,没法直接修改里面的images数组。先把它换成var,这样才能后续更新内容:var jsonObject: [String: Any] = [ "name_space": "users", "data_collection": "data://brownfosman5000/DatFace/", "action" : "add_images", "images": [] ]第二步:将图片字典添加到images数组
接下来要把你的imageDictionary加入到数组里,这里需要先取出原数组、添加元素,再把更新后的数组放回JSON对象里。为了安全,建议用可选绑定处理类型转换:// 先尝试取出原images数组,转成字典数组类型 if var imagesArray = jsonObject["images"] as? [[String: Any]] { // 添加你的图片字典 imagesArray.append(imageDictionary) // 把更新后的数组存回jsonObject jsonObject["images"] = imagesArray } else { // 如果原数组不存在或者类型不对,直接初始化一个包含图片字典的新数组 jsonObject["images"] = [imageDictionary] }额外提醒:避免强制解包的崩溃风险
你现在用了try!强制解析imageJSON,如果解析失败会直接崩溃,建议换成do-catch处理错误:do { let imageDictionary = try JSONSerialization.jsonObject(with: imageJSON, options: []) as! [String : Any] // 这里放上面添加数组的代码 } catch { print("解析图片JSON失败:\(error.localizedDescription)") }
这样操作之后,你的imageDictionary就能成功存入jsonObject的images数组里啦。
内容的提问来源于stack exchange,提问作者jamiroquai93
相关产品推荐
相关产品推荐

