API 请求中的单引号正文

Single-quoted body in API request

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

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

API 只能接受正文中的单引号字符串,但如果不添加反斜杠并使 Swift 中的单引号字符串无法被 API.

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

有没有一种方法可以在 Swift 中传递这个字符串而不使用反斜杠?或者是否存在该格式的字符串或 JSON 编码?

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)