2016-10-26 34 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)