ホームページ >バックエンド開発 >PHPチュートリアル >スキルのまとめ: PHP JSON 拡張機能の正しい使い方_PHP チュートリアル
JSON は、ミドルウェアが JavaScript のネイティブ形式を使用してオブジェクトを作成できるようにするために設計されたプロトコルです。その最も強力な属性は、軽量プロトコルであることです。 RSS 集約やレシピ リストを単に操作する場合、JavaScript で XML の機能を最大限に活用する必要はありません。形式を検証したり、厳密なデータキーイングを保証したりする必要はありません。
PHP JSON 拡張機能のエンコードとデコード
PHP JSON 拡張機能には、エンコードとデコードの 2 つの関数があります。最初の関数は、任意のタイプのデータ オブジェクトを、JavaScript が処理できるようにシリアル化されたデータのセットに変換します。 2 番目の関数は、シリアル化されたデータをデコードし、基本的な PHP オブジェクトまたは連想配列に変換します。 json_decode() を見てみましょう。
json_decode() の例
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">jsonObject</span><span> = </span><span class="attribute-value">'{"21":{"url":"www.blah.com<br />/story1.html","title":"JSON is sweeping<br /> AJAX world","viewed":false},"22":{"url":<br />"www.blah.com/story2.html","title":"JSON <br />is great","viewed":false}}'</span><span>; </span></li><li class="alt"><span>$</span><span class="attribute">decodedObject</span><span> = </span><span class="attribute-value">json_decode</span><span>($jsonObject); </span></li><li><span>$</span><span class="attribute">decodedArray</span><span> = </span><span class="attribute-value">json_decode</span><span>($jsonObject, true); </span></li><li class="alt"><span>print_r($decodedObject); </span></li><li><span>echo "</span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">></span><span class="tag"><</span><span> </span><span class="tag-name">br</span><span class="tag">></span><span>"; </span></span></li> <li class="alt"><span>print_r($decodedArray); </span></li> <li> <span class="tag">?></span><span> </span> </li> <li class="alt"><span> </span></li> </ol>
上記のように、$jsonObject を受け取り、それを PHP ネイティブ オブジェクトにデコードする PHP スクリプトがあります。それを2回デコードしました。 1 回目は変更せずに使用し、2 回目はブール引数を使用して連想配列を作成します。
以下は decode の出力です:
<ol class="dp-xml"> <li class="alt"><span><span>stdClass Object ( [21] =</span><span class="tag">></span><span> <br>stdClass Object ( [url] =</span><span class="tag">></span><span> <br>www.blah.com/story1.html [title] =</span><span class="tag">></span><span> <br>JSON is sweeping AJAX world [viewed] =</span><span class="tag">><br></span><span> ) [22] =</span><span class="tag">></span><span> stdClass Object ( [url] =</span><span class="tag">><br></span><span> www.blah.com/story2.html [title] =</span><span class="tag">></span><span> <br>JSON is great [viewed] =</span><span class="tag">></span><span> ) ) Array ( [21] =</span><span class="tag">></span><span> <br>Array ( [url] =</span><span class="tag">></span><span> www.blah.com/story1.html <br>[title] =</span><span class="tag">></span><span> JSON is sweeping AJAX world<br> [viewed] =</span><span class="tag">></span><span> ) [22] =</span><span class="tag">></span><span> Array ( [url] =</span><span class="tag">><br></span><span> www.blah.com/story2.html [title] =</span><span class="tag">><br></span><span> JSON is great [viewed] =</span><span class="tag">></span><span> ) ) </span></span></li> <li><span> </span></li> </ol>
encode をもう一度見てみましょう:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">results</span><span> = </span><span class="attribute-value">array</span><span>("21" =</span><span class="tag">></span><span> </span></span></li> <li class="alt"> <span>array("url" =</span><span class="tag">></span><span> </span> </li> <li> <span>"www.blah.com/story1.html", "title" =</span><span class="tag">></span><span> </span> </li> <li class="alt"> <span>"JSON is sweeping AJAX world", "viewed" =</span><span class="tag">></span><span> </span> </li> <li> <span>FALSE), "22" =</span><span class="tag">></span><span> array("url"=</span><span class="tag">></span><span> </span> </li> <li class="alt"> <span>"www.blah.com/story2.html", "title" =</span><span class="tag">></span><span> </span> </li> <li> <span>"JSON is great", "viewed" =</span><span class="tag">></span><span> FALSE)); </span> </li> <li class="alt"> <span>$</span><span class="attribute">jsonObject</span><span> = </span><span class="attribute-value">json_encode</span><span>($results); </span> </li> <li><span>echo $jsonObject; </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> <li><span> </span></li> </ol>
再帰なし。タグは追加されていません。これを json_encode() 関数に渡すだけで、JSON シリアル化オブジェクトとして相手側から出力されます。
結論
JSON は、PHP V5.2 で利用できるようになった便利な軽量プロトコルで、PHP アプリケーションからデータを抽出し、それを Ajax アプリケーション プロセスに簡単に入れることができます。同様に、PHP JSON 拡張機能も軽量で非常に便利で、使いやすい関数が 2 つだけ含まれています。
これらの関数を使用すると、オブジェクト構造を変換およびエクスポートできます。また、json_encode() を使用して、PHP データベース接続からのデータを Ajax アプリケーションで使用できるようにすることもできます。 Ajax アプリケーションでデータを処理した後、データを PHP スクリプトに返し、 json_decode() を使用して使用可能なオブジェクト データ構造を再作成できます。データが PHP に返されたら、それをデータベースに保存することも、PHP が提供する多くのオプションから他のデータ処理方法を使用することもできます。