[Titanium] JSON.stringifyした値をPOSTしてもjson_decodeが失敗する

titanium_wordpress_jsonTitanium MobileでWordPressと連携するアプリを開発しているときの覚書。

環境: Titanium SDK 2.1.4, WordPress 3.3.2, PHP 5.3.19

<現象>
アプリ側でJSON.stringifyした値をPOSTして、PHP側でjson_decodeしても失敗する。

<原因>
JSON文字列のダブルクォーテーションがエスケープされている。

 

PHPの設定で「magic_quotes_gpc」はOFFになっているし、アプリ側でPOSTしたDATAはエスケープされていない。

Networkを監視して、POSTする値を確認する方法は前の記事を参考に。

確認用のPHPで試してみると

wp-load.phpに対してPOSTした値のみエスケープされている様子

しょうがないので、json_decodeする前にstripslashesすれば問題なさそう。

WordPressの場合、「stripslashes_deep」という関数もある。

 

< Related Posts >