-1

我正在制作一个向 API 发出请求的 iOS 应用程序。请求采用以下格式:

curl -X PUT -H "Content-Type: application/json" -d '{"username":"blabla@hotmail.com","password":"blabla"}' "https://server.mywebsite.com/login"

API 只能接受正文中的单引号字符串,但如果不添加反斜杠并使 API 无法读取字符串,我无法在 Swift 中创建带有单引号的字符串。

"\'{\"email\": \"blabla@hotmail.com\", \"password\": \"blabla\"}\'"

有没有办法可以在没有反斜杠的情况下在 Swift 中传递这个字符串?或者是否有该格式的字符串或 JSON 编码?

4

1 回答 1

1

您的单引号curl仅在 Unix shell 中需要(在命令行中引用双引号),它们实际上并没有传输到服务器。服务器只看到这个 JSON 有效负载:

{"username":"blabla@hotmail.com","password":"blabla"}

因此,在您的 Swift API 请求中,您可以从字符串中删除单引号:

let auth = "{\"email\": \"blabla@hotmail.com\", \"password\": \"blabla\"}"

有没有办法避免在这里转义双引号?不。在 Swift 中,你不能像在 Python 中那样在'和之间切换。"它也没有"""

由于在自己构建 JSON 时很容易出现引用错误,因此您可能希望改用 JSONSerialization,如下所示:

let jsonAuth   = [ "email":    "blabla@hotmail.com",
                   "password": "blabla" ]
let jsonData   = JSONSerialization.data(withJSONObject: jsonAuth)
let jsonString = String(data: data, encoding: .utf8)
于 2016-11-25T12:02:43.097 回答