使用 Swift 3 进行 JSON 解析

穆罕默德·阿米尔

我在我的应用程序中调用了一个肥皂服务。我从服务器以 JSON 格式收到此响应

{  
  "CustomerName":"Muneer Ahmad/ Ejaz Ahmad (User)  ",
  "IsCorporate":false,
  "ID":48,
  "Name":"Muneer Ahmad/ Ejaz Ahmad (User)  ",
  "GroupID":null,
  "GroupName":null,
  "CustomerID":48
}

我已经尝试过在线教程建议的内容,但我无法解析数据。它给我的错误是“字符 0 周围的值无效”。我的代码是这个

 let is_URL: String = "http://labs2.unitedtracker.com/WTService.asmx?op=GetTerminalNumber"

    let lobj_Request = NSMutableURLRequest(url: NSURL(string: is_URL)! as URL)
    let session = URLSession.shared

    lobj_Request.httpMethod = "POST"
    lobj_Request.httpBody = is_SoapMessage.data(using: String.Encoding.utf8)
    lobj_Request.addValue("labs2.unitedtracker.com", forHTTPHeaderField: "Host")
    lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
    lobj_Request.addValue(String(is_SoapMessage.characters.count), forHTTPHeaderField: "Content-Length")
    lobj_Request.addValue("http://tempuri.org/GetTerminalNumber", forHTTPHeaderField: "SOAPAction")

    let task = session.dataTask(with: lobj_Request as URLRequest, completionHandler: {data, response, error -> Void in

        do {
            if let data = data,
                let json = try JSONSerialization.jsonObject(with: data) as? [String: Any],
                let customerID = json["CustomerID"] as? [[String: Any]] {
                print(customerID)
            }
        } catch {
            print("Error deserializing JSON: \(error)")
        }

        if error != nil
        {
            print("Error: " + String(describing: error))
        }
    })
    task.resume()

任何人都可以建议我我在做什么错。应该如何解析来自 Soap Service 的此类 JSON 响应。

这是来自我的服务器的完整响应。

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetAuthenticateUserResponse xmlns="http://tempuri.org/"><GetAuthenticateUserResult>[{"CustomerName":"Muneer Ahmad/ Ejaz Ahmad (User)  ","IsCorporate":false,"ID":48,"Name":"Muneer Ahmad/ Ejaz Ahmad (User)  ","GroupID":null,"GroupName":null,"CustomerID":48}]</GetAuthenticateUserResult></GetAuthenticateUserResponse></soap:Body></soap:Envelope>
刘爱琴
lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")

你如何保证服务器将json作为响应返回似乎它将text/xml作为响应返回

关于 JSON 解析,我建议使用SwiftyJSON

更多建议

多年前,我使用了一个soap客户端引擎,它会解析wsdlobjective-c代码。今天,也许一些工具可以帮助您生成Swift代码wsdl以便与soap服务器进行通信。

关于 wsdl 到 swift 客户端生成器

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章