【问题标题】:How can you properly convert Swift dictionaries to json and make post requests?如何正确地将 Swift 字典转换为 json 并发出 post 请求?
【发布时间】:2017-05-20 19:08:36
【问题描述】:

这是发出 post 请求,但它将 json 视为字符串,在服务器上显示为 (stuff): ''。我不知道如何解决它。 (当我用python实现这个时,它是完美的。)

    let json: [String: Any] = ["id": 1, "checksum": "hey"]

    let jsonData = try? JSONSerialization.data(withJSONObject: json)

    /*print(jsonData!)
    let parsedData = try? JSONSerialization.jsonObject(with: jsonData!, options: [])
    print(parsedData!)*/
    //print(parsedData)


    // create post request
    let url = URL(string: "http://10.240.81.23:3000/updateProfile")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"

    // insert json data to the request
    request.httpBody = jsonData

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            print(error?.localizedDescription ?? "No data")
            return
        }
        let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
        if let responseJSON = responseJSON as? [String: Any] {
            print(responseJSON)
        }
    }

    task.resume()

【问题讨论】:

  • 什么将 JSON 视为字符串?你想问的问题是什么?是否有特定的线路给您带来麻烦?
  • 也许 AFNetworking 适合您? github.com/AFNetworking/AFNetworking。所以 responseJSON 对象最终是一个字符串?
  • 至少你必须在header中指定Content-Type,否则服务器不知道如何处理你的请求

标签: json swift post


【解决方案1】:

考虑将Alamofire 用于网络,它非常易于使用且效果很好。还有SwiftyJSON,它使 JSON 解析和操作变得非常简单且可选安全。

您可以使用Carthage 轻松安装这两个框架。

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2015-11-03
    • 2018-11-28
    相关资源
    最近更新 更多