PHP での JSON の適用

巴扎黑
巴扎黑オリジナル
2016-11-22 09:52:06945ブラウズ

今日のインターネットでは、AJAX はもはや聞きなれない言葉ではありません。 AJAX といえば、RSS をきっかけに登場した XML がすぐに思い浮かぶかもしれません。特に PHP5 や、最も軽量な SimpleXML などの多数の XML パーサーの登場により、XML 解析はおそらく問題ではなくなりました。ただし、AJAX の場合、XML 解析はフロントエンド Javascript のサポートに重点を置いています。 XML を解析したことがある人なら誰でも、ツリーとノードに混乱すると思います。 XML が非常に優れたデータ保存方法であることは否定できませんが、その柔軟性により解析が困難になります。もちろん、ここで言及する難しさは、この記事の主役である JSON に関連したものです。
JSONとは何ですか?このコンセプトについては繰り返しません。平たく言えば、PHP のシリアル化された文字列のようなデータ ストレージ形式です。データの説明です。たとえば、配列をシリアル化して保存すると、簡単に逆シリアル化して適用できます。 JSON にも同じことが当てはまりますが、クライアント側の Javascript とサーバー側の PHP の間に対話型のブリッジが構築される点が異なります。 PHP を使用して JSON 文字列を生成し、この文字列をフロントエンド Javascript に渡すと、それを簡単に JSON に変換して適用できます。平たく言えば、実際には配列のように見えます。
本題に戻り、JSON の使用方法。 PHP5.2 には JSON のサポートが組み込まれています。もちろん、このバージョンより前のバージョンの場合は、市場に多数の PHP バージョンの実装があるので、必要なものを使用してください。ここでは主に、PHP の JSON 組み込みサポートについて説明します。非常にシンプルな 2 つの関数: json_encode と json_decode (シリアル化とよく似ています)。 1 つはエンコード用、もう 1 つはデコード用です。まずエンコーディングの使用方法を見てみましょう:


$arr = array(
'name' => 'Chen Yixin',
'nick' => 'Deep Space',
'contact' => ; array(
'メール' => 'qq ドット コムのシェンコン',
'ウェブサイト' => 'http://www.chenyixin.com',
)
$json_string = json_encode( $arr );
echo $json_string;
配列を JSON 化するのは非常に簡単です。 UTF-8 以外のエンコードでは中国語の文字はエンコードできないため、gb2312 を使用して PHP コードを作成する場合は、iconv または mb を使用してコンテンツを変換する必要があることに注意してください。中国語を UTF-8 に変換し、json_encode に変換した場合、上記の出力結果は次のようになります。 com","website ":"http://www.chenyixin.com"}}
これはシリアル化に非常に似ているとすでに言いましたが、まだ信じていません。エンコード後は、デコードする必要があります。PHP には、対応する関数 json_decode が用意されており、json_decode を実行すると、次のような操作が行われます。 > 'チェン・イーシン' ,
'ニック' => 'ディープスペース',
'連絡先' => 'qq ドット・コムのシェンコン',
'ウェブサイト' => 'http://www .chenyixin.com',
)
);
$json_string = json_encode($json_string);
オブジェクト内の属性にアクセスしますか? $obj->name は、もちろん、簡単に呼び出せるように配列に変換することもできます。
$obj = json_decode($json_string); (array) $obj;
print_r($arr);
PHP はキャッシュの生成以外に、配列を直接保存するのに特に役立ちません。さあ、JavaScript を使用してこの文字を使用する方法を見てみましょう:

上記のように、この文字列を変数に直接代入すると、JavaScript の配列になります (専門用語では配列と呼ぶべきではありませんが、PHP の習慣のため、理解しやすいように常に配列と呼びます)。このようにして、arr を簡単にトラバースしたり、やりたいことを何でも行うことができます。 AJAX についてはまだ触れていませんね。そうですね、考えてみてください。サーバーから返された responseText が XML ではなく JSON 文字列を使用している場合、フロントエンド Javascript がそれを処理するのに非常に便利ではないでしょうか。犬の絆創膏の使い方はこんな感じです。
実際、これを書いている時点では、データの保存形式が異なることを除けば、JSON と XML の間に大きな違いはありませんが、以下で 1 つ言及しておきます。これは XML とはほとんど関係がありませんが、JSON のより広範なアプリケーション、つまりクロスドメイン データ呼び出しを示すことができます。セキュリティの問題により、AJAX はクロスドメイン呼び出しをサポートしていません。異なるドメイン名でデータを呼び出すことは非常に面倒ですが、解決策はあります (Stone の講義でプロキシについて言及しましたが、私には理解できません)。解決されます)。クロスドメイン呼び出しを説明するには十分な 2 つのファイルを作成しました。
メインファイルindex.html



調整されたファイル profile.php
$arr = array(
'name' => 'Chen Yixin',
' nick' => '深宇宙',
'contact' => array(
'email' => 'shenkong at qq dot com',
'website' => 'http://www.chenyixin . com',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)"
明らかに、index.html が profile.php を呼び出すと、それが生成されます。それをパラメーターとして getProfile に渡し、ニックネームを div に挿入します。このようにして、クロスドメイン データ対話が完了します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。