首页 > 解决方案 > 快速将数组发送到 Web 服务参数

问题描述

我想将数组对象发送到 Web 服务,但是当我尝试将数组添加到参数时它会出错。我尝试了很多东西,但没有发现任何有用的东西。

我想添加("assignees" : newList)参数,然后将其发送到 Web 服务

这是我的代码

    var newList = [Assignee]()
    var assignee = Assignee()
    for u in task.NewWorkList! {
        assignee =  Assignee()
        assignee.assignedEmail = u.Email
        assignee.assignedName = u.Name
        assignee.assignedSurname = u.Surname
        assignee.assignedType = "PERSONEL"
        assignee.assignedTo = String(u.Id!)
        newList.append(assignee)
    }

// in this part newList is an array of assignees.

    var assigneeListString = ""
   let jsonEncoder = JSONEncoder()
    do {
        let jsonData = try jsonEncoder.encode(newList)
        assigneeListString = String(data: jsonData, encoding: .utf8)!
        print("assigneeListString:",assigneeListString) 
    } catch {
        print("error:::")
    }
    var parameters = [
            "taskType" :
                [
                    "code" : "OTHER"
                ],
            "complateButtons": "COMPLATE",
           "assignees" :  [JSON(assigneeListString)], // does not work
           // "assignees" :  [JSON(newList)], // does not work
           // "assignees" :  JSON(newList), // does not work
           // "assignees" :  newList, // does not work
          // "assignees" :  assigneeListString, // does not work
            "repeatTimeType":"NEVER"
            ] as [String : Any]

       print("parameters:",parameters)
        DAL.Service.MakeRequest(url: Constants.Service.Url.newTask,
                                parameters : parameters,
                                httpMethod : ServiceMethods.post.rawValue,
                                resultFunc: serviceResultFunc)

当我打印参数受理人部分添加额外的分号,

[[{"assignedTo":"63659","assignedSurname":"DAVID","assignedType":"PERSONEL","assignedName":"JOE","assignedEmail":"joe@abc.com"},{"assignedTo":"21026","assignedSurname":"GEORGE","assignedType":"PERSONEL","assignedName":"MICHAEL","assignedEmail":"michael@abc.com"}]],

当我手动将受让人添加到 patmeters 时,没关系。

[["assignedTo":"63659","assignedSurname":"DAVID","assignedType":"PERSONEL","assignedName":"JOE","assignedEmail":"joe@abc.com"},{"assignedTo":"21026","assignedSurname":"GEORGE","assignedType":"PERSONEL","assignedName":"MICHAEL","assignedEmail":"michael@abc.com"]],

标签: arraysjsonswift

解决方案


我用下面的代码解决了这个问题:

          var assigneesList = [[String:Any]]()
             for a in task.YeniGorevAtamaList! {
                  assigneesList.append(
                      ["assignedTo":(a.Id) ?? "0",
                       "assignedSurname":a.Surname ?? "",
                       "assignedType":a.assignedType ?? "PERSONEL",
                       "assignedName":a.Name ?? "",
                       "assignedEmail":a.Email as Any
                      ]
                      );
            }

let parameters = [
                "taskType" :
                    [
                        "code" : "DIGER"
                    ],  
                 "assignees" : assigneesList ,
                "taskUrls" :
                    [
                    ]
                ] as [String : Any]

推荐阅读