在我最近开发的应用程序中,客户希望能够在其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
答案 0 :(得分:2)
使用@ GoodByeStackOverflow&#39; Aldwych
存储库,我能够轻松地解决这个问题。我能够直接修改克隆版本的JSON对象,然后将其作为NSDictionary发送回API服务器。