-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 シェルでのみ必要であり (コマンド ラインで二重引用符を引用するため)、実際にはサーバーに送信されません。サーバーは、次の 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 に答える