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)
我正在制作一个 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)