JSONの基本
簡単に言うと、JSON は JavaScript オブジェクトで表される一連のデータを文字列に変換し、関数間で、または非同期アプリケーション ターミナル プログラムの Web クライアントからサーバーに簡単に渡すことができます。この文字列は少し奇妙に見えますが (後でいくつかの例を参照します)、JavaScript はこれを簡単に解釈し、JSON は名前と値のペアよりも複雑な構造を表現できます。たとえば、キーと値の単純なリストではなく、配列や複雑なオブジェクトを表現できます。
簡単なJSONの例
最も単純な形式では、名前と値のペアは次のように JSON で表すことができます:
この例は非常に基本的なもので、実際には同等のプレーン テキストの名前と値のペアよりも多くのスペースを占有します。
ただし、JSON は、複数の名前と値のペアを文字列化するときに真価を発揮します。まず、次のように、複数の名前と値のペアを含むレコードを作成できます:
構文的には、これは名前と値のペアに比べて大きな利点ではありませんが、この場合は JSON の方が使いやすく、読みやすいです。たとえば、上記の 3 つの値が同じレコードの一部であることが明らかになり、中括弧によって値が何らかの関連性を示します。
値の配列
JSON を使用すると、値のセットを表現する必要がある場合に読みやすさが向上し、複雑さが軽減されます。たとえば、人の名前のリストを表現したいとします。 XML では、多くの開始タグと終了タグが必要です。一般的な名前と値のペア (このシリーズの以前の記事で説明したものなど) を使用する場合は、独自のデータ形式を作成するか、キー名を person1 の形式に変更する必要があります。 -ファーストネーム。
JSON を使用する場合は、複数のレコードを中括弧でグループ化するだけです:
これを理解するのは難しくありません。この例では、people という変数が 1 つだけあり、その値は 3 つのエントリの配列であり、各エントリは名、姓、電子メール アドレスを含む個人のレコードです。上の例は、括弧を使用してレコードを単一の値に結合する方法を示しています。もちろん、複数の値 (それぞれに複数のレコードが含まれる) は同じ構文を使用して表現できます:
ここで最も注目すべき点は、複数の値を表現できることです。各値には複数の値が含まれています。ただし、レコード内の実際の名前と値のペアは、メイン エントリ (プログラマ、作成者、ミュージシャン) ごとに異なる場合があることにも注意してください。 JSON は完全に動的であるため、JSON 構造の途中でデータの表現方法を変更できます。
JSON 形式のデータを操作するときに従う必要がある事前定義された制約はありません。したがって、同じデータ構造内でデータの表現方法を変更することができ、同じものを異なる方法で表現することもできます。
JavaScript での JSON の使用
JSON 形式をマスターすれば、JavaScript での使用は簡単です。 JSON はネイティブ JavaScript 形式です。つまり、JavaScript での JSON データの処理には特別な API やツールキットは必要ありません。
JSON データを変数に代入する
たとえば、新しい JavaScript 変数を作成し、それに JSON 形式のデータ文字列を直接割り当てることができます:
これは非常に簡単です。先ほど見たように、データは JSON 形式で含まれます。ただし、データにアクセスする方法がまだ明らかになっていないため、これでは十分ではありません。
データにアクセスする
明らかではないかもしれませんが、上記の長い文字列は実際には単なる配列であり、JavaScript 変数に配置することでこの配列に簡単にアクセスできます。実際、配列要素を表すにはドット表記を使用するだけです。したがって、プログラマ リストの最初のエントリの姓にアクセスするには、JavaScript で次のようなコードを使用するだけです:
配列のインデックス付けはゼロベースであることに注意してください。したがって、このコード行は最初に people 変数のデータにアクセスし、次に、programmers というエントリに移動し、次に最初のレコード ([0]) に移動し、最後に lastName キーの値にアクセスします。結果は文字列値「McLaughlin」になります。
同じ変数を使用した例をいくつか示します。
このような構文を使用すると、追加の JavaScript ツールキットや API を使用せずに、JSON 形式のデータを処理できます。
JSONデータを変更する
ピリオドと括弧を使用してデータにアクセスできるのと同じように、データも同じ方法で簡単に変更できます。
文字列を JavaScript オブジェクトに変換した後、次のように変数内のデータを変更できます。
文字列に変換し直す
もちろん、オブジェクトをこの記事で説明したテキスト形式に簡単に変換できない場合、すべてのデータ変更はほとんど意味がありません。この変換も JavaScript では簡単です:
それで大丈夫ですよ!これで、Ajax アプリケーションのリクエスト文字列など、どこでも使用できるテキスト文字列が完成しました。 www.2cto.com
さらに、あらゆる JavaScript オブジェクトを JSON テキストに変換できます。元々 JSON 文字列が割り当てられていた変数を扱えるだけではありません。 myObject という名前のオブジェクトを変換するには、同じ形式のコマンドを実行するだけです:
これが、JSON とこのシリーズで説明する他のデータ形式の最大の違いです。 JSON を使用する場合、簡単な関数を呼び出すだけで、すぐに使用できるフォーマット済みのデータを取得できます。他のデータ形式の場合は、生データとフォーマット済みデータの間の変換が必要です。ドキュメント オブジェクト モデル (独自のデータ構造をテキストに変換する関数を提供する) のような API を使用する場合でも、API を学習し、ネイティブ JavaScript オブジェクトと構文を使用する代わりに API のオブジェクトを使用する必要があります。
要するに、大量の JavaScript オブジェクトを扱う場合、リクエストでサーバー側プログラムに送信できる形式にデータを簡単に変換できるように、JSON がほぼ確実に良い選択であるということです。
PHPでのJSONの応用
今日のインターネットでは、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 = 配列(
'名前' => 'Linux',
'ニック' => 'php',
'連絡先' => 配列(
「メール」 => 「メール」、
'ウェブサイト' => http://blog.csdn.net/21aspnet,
)
);
$json_string = json_encode($arr);
エコー $json_string;
?>
配列を JSON 化するのは非常に簡単です。 UTF-8 以外のエンコードでは中国語の文字はエンコードできないため、gb2312 を使用して PHP コードを作成する場合は、iconv または mb を使用してコンテンツを変換する必要があることに注意してください。中国語から UTF-8、そして json_encode への変換はシリアル化に非常に似ていると言いましたが、まだ信じられていません。エンコード後、デコードする必要があります。PHP には、対応する関数 json_decode が用意されています。 json_decode を実行すると、次のような操作が行われます。
$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (配列) $obj;
print_r($arr);
PHP はキャッシュの生成以外に、配列を直接保存したほうが便利な気がしますが、これを Javascript で使用する方法を見てみましょう。 . セグメント文字。
上記では、この文字列を変数に直接代入するとJavaScriptの配列になります(専門用語では配列と呼ぶべきではありませんが、PHPの習慣上、わかりやすくするために常に配列と呼びます)。このようにして、arr を簡単にトラバースしたり、やりたいことを何でも行うことができます。 AJAX についてはまだ触れていませんね。そうですね、考えてみてください。サーバーから返された responseText が XML ではなく JSON 文字列を使用している場合、フロントエンド Javascript がそれを処理するのに非常に便利ではないでしょうか。犬の絆創膏の使い方はこんな感じです。
実際、これを書いている時点では、データの保存形式が異なることを除けば、JSON と XML の間に大きな違いはありませんが、1 点だけ以下に言及します。これは XML とはほとんど関係がありませんが、JSON のより広範なアプリケーション、つまりクロスドメイン データ呼び出しを示すことができます。セキュリティの問題により、AJAX はクロスドメイン呼び出しをサポートしていません。異なるドメイン名でデータを呼び出すことは非常に面倒ですが、解決策はあります (Stone の講義でプロキシについて言及しましたが、私には理解できません)。解決されます)。 2 つのファイルを作成しましたが、これらはクロスドメイン呼び出しを示すのに十分です。
メインファイルindex.html
<スクリプトタイプ="text/javascript">
関数 getProfile(str) {
var arr = str;
document.getElementById('nick').innerHTML = arr.nick;
}
スクリプト>