jsonデータのフロントエンド(javascript)とバックエンド(php)変換

4136 ワード

学習目的:前後データ交換
 
考え方:
jsonデータフォーマットはどうですか?
バックエンドの様々な言語はどのように自分の内容をjson形式の内容に変換しますか?
フロントエンドはどのようにjsonデータを受信しますか?いくつかの方法がありますか?
jsではどのようにjsonデータをjsの配列に変換して、オブジェクトを使用しますか?
 
問題:
ajaxで受信したデータは変数に直接付与され,中には配列があることが分かった.
phpではどのようにデータを伝達するか分かりませんか?(またはajaxのxmlhttp.responseTextはバックエンドデータをどのように取得しますか?)
phpでオブジェクトと配列をjsonデータフォーマットに変換する方法.
 
学習プロセス:
1.json知識の普及
構造的に見ると、すべてのデータは最終的に3つのタイプに分けることができます.
1つ目のタイプはscalar(スカラー)、すなわち「北京」という単独の語のような単独string(文字列)または数字(numbers)である. 
2つ目のタイプはsequence(シーケンス)で、つまりいくつかの関連データが一定の順序で並べられており、array(配列)やList(リスト)とも呼ばれ、例えば「北京、東京」と呼ばれています. 
3つ目のタイプはmapping(マッピング)です.つまり、データにはhash(ハッシュ)やdictionary(辞書)とも呼ばれ、「首都:北京」などの名前があります. 
JSON(JavaScript Object Notation)は軽量レベルのデータ交換フォーマットで、ルールは非常に簡単です.
1)並列データ間をカンマ(",")で区切る. 
2)マッピングはコロン(":")で表される. 
3)並列データの集合(配列)は括弧("[])で表される. 
4)マッピングされた集合(オブジェクト)は括弧("{}")で表される. 
このルールに従って、以下のように理解できます.
1.配列は「[]で作成され、オブジェクトは「{}」で作成され、Jsonは基本的に[]または{}で作成された配列またはオブジェクトを使用します.そうしないと、普通の文字列には意味がありません. 
2.配列でもオブジェクトでも、間の要素は「,」で区切られます. 
3.オブジェクトの内部には、名前と値が「:」で区切られ、「:」で区切らなければならない.属性名または値は単独で存在しない. 
4.オブジェクトと配列は互いにネストすることができ、すなわち配列の要素はオブジェクトであっても配列であってもよく、同理オブジェクトの属性の値はオブジェクトであっても配列であってもよい. 
 
2.Jsonは、Ajaxのアプリケーションクライアントがサーバ側にアドレスバーやpostを介して容易にデータを提出できるが、サーバ側がデータを処理した後、計算した結果情報をクライアントに返信する際に一定の難易度があり、特にデータ量が大きい場合.このときデータのフォーマットが鍵となり、あるフォーマットでデータの組み立てが容易になり、解析が容易になります.Jsonを使うのは良い戦略です.サーバ側では、Jsonのフォーマットに従って文字列を組み立て、クライアントに応答します.クライアントはどのように解析しますか?一般的には2つの戦略があります(2つの戦略の名前は自分が与えた名前で、必ずしも合理的ではありませんが、考え方は問題ありません):
1.var json=eval('('+result+')')を直接解析する.以上の式により,サーバ側がクライアントに応答するJson形式の文字列をJson(フォーマットの)オブジェクトに解析し,「json」と名付け,「json.」あるいは「json[]」の方法でデータアクセスが可能です. 2.間接解析var json=“r=”+result; eval(json);もちろん、上の行コードはeval(「r=」+result)にマージできます.上記の計算により、サーバ側がクライアントに応答するJson形式の文字列をJson(形式の)オブジェクトに解析することもできるが、このオブジェクト名は「r」であり、「r.」または「r[]」でデータアクセスが可能である.まとめ:Jsonは簡単なデータ交換フォーマットで、xmlの代わりにサーバ間で柔軟にデータを交換することができます.
3.JavaScriptの配列とオブジェクトJavaScriptでは、通常[]で作成されるデータフォーマットを配列と呼び、{}で作成されるものをオブジェクトと呼ぶ.
配列a=[1,2,3,4]、もう1つのオブジェクトa={0:1,1:2,2:3,3:4}があり、alert(a[1])を実行し、両方の場合の実行結果は同じです!つまり,データセットは配列でもオブジェクトでも表すことができるが,いったいどれを使うべきなのか.配列は秩序化されたデータの集合を表し、オブジェクトは無秩序なデータの集合を表す.データの順序が重要な場合は、配列を使用します.そうでない場合は、オブジェクトを使用します.もちろん、配列とオブジェクトのもう一つの違いは、配列内のデータには「名前」(name)がなく、オブジェクト内のデータには「名前」(name)があることです.しかし問題は、多くのプログラミング言語に「関連配列」(associativearray)というものがあることです.この配列のデータには名前があります.例えばjavascriptでは、var a={「都市」:「北京」、「面積」:16800、「人口」:1600}のオブジェクトを定義できます.ただし、var a=new Array()という関連配列として定義することもできます.a[「都市」=「北京」;a[「面積」=1680;a[「人口」]=1600;これでは配列と集合に違いはないようですが、Javascript言語では、関連配列がオブジェクトであり、オブジェクトが関連配列です.第2の方法で作成された配列と[]方式で作成された配列には大きな違いがあり、第2の方法で作成された「配列」では、第1の方法と同様に、「a.都市」で「北京」、「a.人口」で「1600」を得ることもできますが、第1の方法で作成されたオブジェクトとは異なります.第1の方式で定義されたaにはlength属性がなく、第2の方式で定義されたaにはあるが、値は0であり、中には違いがあることがわかる.具体的に明らかにするには、下層の実装コードを見なければならないだろう. 
4.PHP配列とJson間の変換
Jsonを使用するのはajaxオブジェクトを使用する場合,プログラムとJS関数の間のデータインタラクションのためであることが多い.JSはPHPの中の配列を知らないので、PHPもJSの中の配列やオブジェクトを知らない.Jsonはこの問題をよく解決した.
PHPは配列をJsonの強大なPHPに変えてすでに内蔵関数を提供しました:json_encode()とjson_decode().わかりやすいjson_Encode()とは,PHP配列をJsonに変換することである.逆にjson_decode()はJsonをPHP配列に変換することである.
$array = array("name" => "Eric","age" => 23);   echo json_encode($array);

プログラムは{"name":"Eric","age":23}を印刷します.
$array = array(0 => "Eric", 1 => 23);   echo json_encode($array);

プログラムが印刷されます:["Eric",23]
以上の2つの例から分かるように、PHP配列のキーが数字であればjson_Encode()は、PHP配列のキーが文字列である場合、配列形式のJsonを返します.ではjson_encode()はオブジェクト形式のJsonを返します.さっき言ったばかりです.両者のjsでの呼び出しは異なる.
他のバックエンド言語には、jsonデータを処理するための対応する関数があるはずです. 
先端業界のすべての技術を学び、北京周辺のすべての都市を遊んだ.そして私はその生まれ育った場所に戻ります.家族がいる場所が家だからです.