从JSON响应创建一个对象,修改值,并在Swift中返回它

时间:2015-04-10 15:09:21

标签: ios json swift

在我最近开发的应用程序中,客户希望能够在其POS系统中创建新用户。他们的POS系统是基于网络的,并且有一个庞大的API,所以这很容易。

现在,他们希望应用程序在创建重复用户之前查看用户是否存在,这很好。但是,如果用户记录中的信息是重复的,他们也希望更新这些信息。

POS系统的API返回包含250多个字段的广泛“客户”JSON响应。我只需要更新其中的4个字段。

有没有办法从“获取客户”响应(它是一个多维数组)轻松创建对象,编辑特定值,然后将该对象作为JSON发布回“更新客户”方法?< / p>

编辑#1

仍然有问题缠绕我的头。进一步澄清过程及其工作原理:

1) API call to get user information 2) User information returned via JSON. The response is a REALLY big, multi-dimensional, response. 3) 4 of the fields in the returned JSON customer have to be edited 4) JSON then needs to be used to create "Parameters" to PUT/POST back to the API.

这是我到目前为止所做的:

var existingCustomer = NSMutableDictionary()

...Function to acquire JSON using Alamofire...

var json = JSON(response!)
let d = json["Customer"]["Customer"].dictionaryValue

for (k, v) in d {
    if let value = v.string {
        self.existingCustomer[k] = value
    }
    //CHECK FOR OTHER TYPES
}

这使得字典看起来与JSON类似,但我关注的是Customer JSON的多维方面。我不确定value,一旦被检查为dictionaryObject将保持它的K,V关系。我还没有测试过。

一旦我完成了existingCustomer字典,我就可以遍历这些条目来创建POST / PUT的参数,但是,他们需要再次保持他们的KV关系。

参数通常如下:

var params = [
    "firstName":"John",
    "lastName":"Appleseed",
    "photos": [
        "url":"www.website.com",
        "width":1024,
        "height":768
    ],
    "addresses": [
        "shippingAddress": [
            "street":"123 Test Road"
        ],
        "homeAddress": [
            "street":"456 Test Crescent"
        ]
    ],
    "phone":"555-555-5555"
]

只是更长,更长。有200 KVs

1 个答案:

答案 0 :(得分:2)

使用@ GoodByeStackOverflow&#39; Aldwych存储库,我能够轻松地解决这个问题。我能够直接修改克隆版本的JSON对象,然后将其作为NSDictionary发送回API服务器。