将 [NSDictionary]() 作为 JSON 发送到 API
Sending [NSDictionary]() to API as JSON
我有一个 [NSDictionary]()
从 Realm Result 创建的。
我的主要目标是将此 [NSDictionary]()
解析为 JSON,然后通过 Alamofire 将其发送到 API,但使用此数据我必须向用户发送密码和详细信息。
let orderRequestUserValues = [ "ClientID": "TEST",
"UserName": "sysadmin",
"Password": "123456",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5,
"RequestParameters":
[
"OrderType": 1,
"Notes": "John Is Reordering",
"ListofStockItemOrderData": //<--[NSDictionary]() data has to come here
]
]
有了这个 orderRequestUserValues
我必须发送 [NSDictionary]()
正如"ListofStockItemOrderData"评论中所见。
我是新人,所以请不要嘲笑我。
我想知道如何将 orderRequestUserValues
和 [NSDictionary]()
转换为可以通过 Alamofire 发送的 JSON。
JSON 收到的最终产品必须如下所示:
额外信息
下面是我如何将 Realm 存储的数据转换为 NSDictionary
extension Object {
func toDictionary() -> NSDictionary {
let properties = self.objectSchema.properties.map { [=13=].name }
let dictionary = self.dictionaryWithValuesForKeys(properties)
let mutabledic = NSMutableDictionary()
mutabledic.setValuesForKeysWithDictionary(dictionary)
for prop in self.objectSchema.properties as [Property]! {
// find lists
if let nestedObject = self[prop.name] as? Object {
mutabledic.setValue(nestedObject.toDictionary(), forKey: prop.name)
} else if let nestedListObject = self[prop.name] as? ListBase {
var objects = [AnyObject]()
for index in 0..<nestedListObject._rlmArray.count {
let object = nestedListObject._rlmArray[index] as AnyObject
objects.append(object.toDictionary())
}
mutabledic.setObject(objects, forKey: prop.name)
}}
return mutabledic }}
请帮忙。
提前谢谢你。
你需要构建3个字典才能实现你想要的。
- 第一个字典:orderRequestUserValues。
- 第二个字典:requestParameters。
- 第 3 个字典:listofStockItemOrderData。
然后你这样做:
NSDictionary *listofStockItemOrderData = [NSDictionary dictionaryWithObjectsAndKeys:@3,@"StockItemUnique",
@5,@"StockQty",
@0,@"StockUnitCost",
@1,@"OrderLocationUnique",nil];
NSDictionary *requestParameters = [NSDictionary dictionaryWithObjectsAndKeys:@1,@"OrderType",
@"John Is Reordering",@"Notes",
listofStockItemOrderData,@"ListofStockItemOrderData", nil];
NSDictionary *orderRequestUserValues = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST",@"ClientID",
@"sysadmin",@"UserName",
@"123456",@"Password",
@"StockProcessing",@"ModuleID",
@"SetStockOrder",@"ClientID",
@32,@"TransmissionFlags",
@5,@"TransmissionMethod",
requestParameters,@"RequestParameters",nil];
最后,您将字典转换为 NSData json 到 post 到您的网络服务:
NSError *error = nil;
NSData *json = [NSJSONSerialization dataWithJSONObject:orderRequestUserValues options:NSJSONWritingPrettyPrinted error:&error];
这是我为获得想要的结果所做的工作:
var orderRequestUserValues : Dictionary = [ "ClientID": "TEST",
"UserName": "sysadmin",
"Password": "123456",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5
]
var requestParameters : Dictionary = [
"OrderType": 1,
"Notes": "John Is Reordering"
]
requestParameters.updateValue(objectDictionaries, forKey: "ListofStockItemOrderData")
orderRequestUserValues.updateValue(requestParameters, forKey: "RequestParameters")
//print(orderRequestUserValues)
do{
let newDict = try NSJSONSerialization.dataWithJSONObject(orderRequestUserValues, options: NSJSONWritingOptions.PrettyPrinted)
let decoded = try NSJSONSerialization.JSONObjectWithData(newDict, options: [])
print(decoded)
我有一个 [NSDictionary]()
从 Realm Result 创建的。
我的主要目标是将此 [NSDictionary]()
解析为 JSON,然后通过 Alamofire 将其发送到 API,但使用此数据我必须向用户发送密码和详细信息。
let orderRequestUserValues = [ "ClientID": "TEST",
"UserName": "sysadmin",
"Password": "123456",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5,
"RequestParameters":
[
"OrderType": 1,
"Notes": "John Is Reordering",
"ListofStockItemOrderData": //<--[NSDictionary]() data has to come here
]
]
有了这个 orderRequestUserValues
我必须发送 [NSDictionary]()
正如"ListofStockItemOrderData"评论中所见。
我是新人,所以请不要嘲笑我。
我想知道如何将 orderRequestUserValues
和 [NSDictionary]()
转换为可以通过 Alamofire 发送的 JSON。
JSON 收到的最终产品必须如下所示:
额外信息 下面是我如何将 Realm 存储的数据转换为 NSDictionary
extension Object {
func toDictionary() -> NSDictionary {
let properties = self.objectSchema.properties.map { [=13=].name }
let dictionary = self.dictionaryWithValuesForKeys(properties)
let mutabledic = NSMutableDictionary()
mutabledic.setValuesForKeysWithDictionary(dictionary)
for prop in self.objectSchema.properties as [Property]! {
// find lists
if let nestedObject = self[prop.name] as? Object {
mutabledic.setValue(nestedObject.toDictionary(), forKey: prop.name)
} else if let nestedListObject = self[prop.name] as? ListBase {
var objects = [AnyObject]()
for index in 0..<nestedListObject._rlmArray.count {
let object = nestedListObject._rlmArray[index] as AnyObject
objects.append(object.toDictionary())
}
mutabledic.setObject(objects, forKey: prop.name)
}}
return mutabledic }}
请帮忙。 提前谢谢你。
你需要构建3个字典才能实现你想要的。
- 第一个字典:orderRequestUserValues。
- 第二个字典:requestParameters。
- 第 3 个字典:listofStockItemOrderData。
然后你这样做:
NSDictionary *listofStockItemOrderData = [NSDictionary dictionaryWithObjectsAndKeys:@3,@"StockItemUnique",
@5,@"StockQty",
@0,@"StockUnitCost",
@1,@"OrderLocationUnique",nil];
NSDictionary *requestParameters = [NSDictionary dictionaryWithObjectsAndKeys:@1,@"OrderType",
@"John Is Reordering",@"Notes",
listofStockItemOrderData,@"ListofStockItemOrderData", nil];
NSDictionary *orderRequestUserValues = [NSDictionary dictionaryWithObjectsAndKeys:@"TEST",@"ClientID",
@"sysadmin",@"UserName",
@"123456",@"Password",
@"StockProcessing",@"ModuleID",
@"SetStockOrder",@"ClientID",
@32,@"TransmissionFlags",
@5,@"TransmissionMethod",
requestParameters,@"RequestParameters",nil];
最后,您将字典转换为 NSData json 到 post 到您的网络服务:
NSError *error = nil;
NSData *json = [NSJSONSerialization dataWithJSONObject:orderRequestUserValues options:NSJSONWritingPrettyPrinted error:&error];
这是我为获得想要的结果所做的工作:
var orderRequestUserValues : Dictionary = [ "ClientID": "TEST",
"UserName": "sysadmin",
"Password": "123456",
"ModuleID": "StockProcessing",
"FunctionID": "SetStockOrder",
"TransmissionFlags": 32,
"TransmissionMethod": 5
]
var requestParameters : Dictionary = [
"OrderType": 1,
"Notes": "John Is Reordering"
]
requestParameters.updateValue(objectDictionaries, forKey: "ListofStockItemOrderData")
orderRequestUserValues.updateValue(requestParameters, forKey: "RequestParameters")
//print(orderRequestUserValues)
do{
let newDict = try NSJSONSerialization.dataWithJSONObject(orderRequestUserValues, options: NSJSONWritingOptions.PrettyPrinted)
let decoded = try NSJSONSerialization.JSONObjectWithData(newDict, options: [])
print(decoded)