[英]Sending [NSDictionary]() to API as JSON
我有一個從領域結果創建的[NSDictionary]()
。 我的主要目標是將此[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收到的最終產品必須如下所示:
EXTRA INFO以下是我將Realm存儲數據轉換為NSDictionary的方法
extension Object {
func toDictionary() -> NSDictionary {
let properties = self.objectSchema.properties.map { $0.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個詞典來實現你想要的。
然后你這樣做:
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以發布到您的Web服務:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.