2016-10-26 32 views
1

我有一個從領域結果創建的[NSDictionary]()。 我的主要目標是將此[NSDictionary]()解析爲JSON,然後通過Alamofire將其發送到API,但通過這些數據我必須發送用戶密碼和詳細信息。作爲JSON發送[NSDictionary]()到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接收必須是這樣的終端產品:

enter image description here

EXTRA信息 這是我如何轉換我的境界存儲的數據的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 }} 

請幫助。 預先感謝您。

回答

0

你需要構造3個字典來實現你想要的。

  • 1st dictionary:orderRequestUserValues。
  • 第2個字典: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張貼到你的Web服務:

NSError *error = nil; 
NSData *json = [NSJSONSerialization dataWithJSONObject:orderRequestUserValues options:NSJSONWritingPrettyPrinted error:&error]; 
+0

我已經有一個[NSDictionary]()爲「ListofStockI temOrderData「這是我的領域數據。我將如何加入這3本字典? –

+1

這是Objective c? –

+0

是的不幸。我沒有很快的經驗。 –

0

這裏是我做了什麼得到的結果我想要:

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)