gpt4 book ai didi

arrays - SwiftyJSON 将新数据附加到现有的 JSON 数组

转载 作者:可可西里 更新时间:2023-11-01 01:39:24 24 4
gpt4 key购买 nike

我正在研究一种将新的 JSON 数据添加到现有 JSON 数组的方法:

var resources: JSON = [
"resources": []
]

override func viewDidLoad() {
super.viewDidLoad()

getApiResourceA() { responseObject, error in
var resourceA: JSON = [
"resourceA": []
]

let resourceAResponseObject = JSON(responseObject!)
resourceA["resourceA"] = resourceAResponseObject
self.resources["resources"] = resourceA
}

getApiResourceB() { responseObject, error in
var resourceB: JSON = [
"resourceB": []
]

let resourceBResponseObject = JSON(responseObject!)
resourceB["resourceB"] = resourceBResponseObject
self.resources["resources"] = resourceB
}
}

我想要得到的结构是:

{
"resources": {
"resourceA": {
"id": 1
"name": "Name1"
}
"resourceB": {
"id": 2
"name": "Name2"
}
}
}

但是在我的代码中创建了两个不同的“资源”数组...

有人知道怎么处理吗?

最佳答案

首先重要的是要了解 JSONStruct 意味着每次传递或使用它时都会复制它。

另一个问题,您将资源声明为 Array 而不是 Dictionary 意味着您可以使用 resource 作为键。

声明扩展:

extension JSON{
mutating func appendIfArray(json:JSON){
if var arr = self.array{
arr.append(json)
self = JSON(arr);
}
}

mutating func appendIfDictionary(key:String,json:JSON){
if var dict = self.dictionary{
dict[key] = json;
self = JSON(dict);
}
}
}

使用:

//notice the change [String:AnyObject]
var resources: JSON = [
"resources": [String:AnyObject](),
]

resources["resources"].appendIfDictionary("resourceA", json: JSON(["key1":"value1"]))
resources["resources"].appendIfDictionary("resourceB", json: JSON(["key2":"value2"]))

结果:

{
"resources" : {
"resourceB" : {
"key2" : "value2"
},
"resourceA" : {
"key1" : "value1"
}
}
}

关于arrays - SwiftyJSON 将新数据附加到现有的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com