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

标签 arrays json swift

我正在研究一种将新 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/

相关文章:

ios - 有什么方法可以只允许将 MKMapView 缩放到特定区域,同时禁用任何其他用户交互?

python - 如何仅将值添加到 Numpy 2D 矩阵中的某些索引

c# - ReferenceType 和 ValueType 的数组是对象数组的无效参数

java - 使用递归获取数组中的最大元素

javascript - 从 package.json 配置 npm cli 标志

php - 如何将两个 php json 文件整合为一个[自动完成]?

C - 给定两个数组,你如何找到其中一个数组的唯一元素的数量?

ios - iOS 中核心数据的使用

ios - 快速切换大小写警告

ios - Swift:像 Lua 一样快速从数组中删除元素