2019年2月1日金曜日

[NSJSONSerialization dataWithJSONObject:options:error]で文字列化したJSONデータが、PHP7のjson_decode()で失敗する

環境:
クライアント:macOS10.13.6, XCode10.1
サーバー:FreeBSD, PHP7.3

問題:
[NSJSONSerialization dataWithJSONObject:options:error]で文字列化したJSONデータをPHP7で受け取り、json_decode()すると失敗する。

原因:
[NSJSONSerialization dataWithJSONObject:options:error]ではシングルクォーテーションなどもバックスラッシュが加えられるが、PHP7のjson_decode()だと正しいJSONデータとして認識されない。

解決:
受け取ったJSON文字列にstripslashes();をかけ、その後json_decode()を利用する。
以下、例。

if (isset($_POST["received_json"]) {
    $jsonString = $_POST["received_json"];
    $jsonString = stripslashes($jsonString);
    $jsonObject = json_decode($jsonString);
}


0 件のコメント: