0

我正在尝试使用 Swift 将一些数据发布到服务器:

要创建 JSON,我执行以下操作。

let json: [String: Any] = ["jwt": jwt as Any, "comment": newmessage as Any,"isuser": true,"ismax": false]

这似乎有效,因为调试器显示了下面列出的 4 个键值对。然后我尝试序列化正在使用:

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

这似乎不起作用,因为 jsonData 对象将调试器记录为 0 字节。

我的发送代码是:

 let url = URL(string: "https://api-endpoint")!
        var request = URLRequest(url: url)
        request.httpMethod = "POST"

        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()
    }

虽然编译器没有抱怨,但在调试器中,我可以看到 jsonData 有 0 个字节,并且 json 似乎没有被发送。

我的代码有什么问题:

值得注意的是,尽管我知道它们是字符串,但编译器强迫我将一些数据转换为 Any。json 对象在调试器中显示为:

(lldb) po json
▿ 4 elements
  ▿ 0 : 2 elements
    - key : "comment"
    ▿ value : Optional<String>
      - some : "Hi"
  ▿ 1 : 2 elements
    - key : "isuser"
    - value : true
  ▿ 2 : 2 elements
    - key : "ismax"
    - value : false
  ▿ 3 : 2 elements
    - key : "jwt"
    ▿ value : Optional<String>
      - some : "<-Long hash token ie string->"
4

1 回答 1

-1
 let resultSerialization: AnyObject? = try JSONSerialization.jsonObject(with: dataResponse, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

 if (resultSerialization is [AnyHashable: Any]) == true 
{
    dictionaryResponse = resultSerialization as? NSMutableDictionary

 }
于 2019-02-22T12:30:12.073 回答