簡體   English   中英

將[NSDictionary]()作為JSON發送到API

[英]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個詞典來實現你想要的。

  • 第一本詞典: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以發布到您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM