【问题标题】:swift send array to web service parameters快速将数组发送到 Web 服务参数
【发布时间】:2019-10-18 15:00:40
【问题描述】:

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

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

这是我的代码

    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"}]],

当我手动将受理人添加到 patameters 时,没问题。

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

【问题讨论】:

  • 也许:"assignees" = try? JSONSerialization.jsonObject(with: jsonData)

标签: arrays json swift


【解决方案1】:

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

          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]

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多