【javascript】phpによるjsonフォーマットデータ処理のまとめ


1.jsonの概要:
jsonとは?
簡単に言えば、JSONは、JavaScriptオブジェクトに示すデータのセットを文字列に変換する、関数間でこの文字列を簡単に渡すことができるか、非同期アプリケーションでWebクライアントからサーバ側プログラムに文字列を渡すことができる.
一般的には、phpシーケンス化された文字列のように、データの格納フォーマットです.これもデータ記述です.例えば、配列をシーケンス化して保存すると、逆シーケンス化して適用することができます.jsonもそうですが、クライアントjavascriptとサーバ側phpが相互作用するブリッジを構築しています.jsonの使い方php 5.2の開始とその後のバージョンにはjsonのサポートが内蔵されており、主に2つの関数があります:json_encode():符号化、json文字列json_を生成decode():復号注意:json_経由encode()関数を符号化すると、$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';json形式の文字列を出力すると、json形式のjavascriptオブジェクトが得られます.
2.jsonケース1:
json_encode   :
	<?php   
	$arr = array(   
   		 'name' => '   ',   
   		 'nick' => '    ,   
   		 'contact' => array(   
        		'email' => '[email protected]',   
        		'website' => 'http://zhuoweida.blog.tianya.cn',   
   		 )   
	);   
	$json_string = json_encode($arr);   
	echo $json_string;//json      
	?>

結果:
{
      "name":"\u9648\u6bc5\u946b",
      "nick":"\u6df1\u7a7a",
      "contact":
              {
                  "email":"shenkong at qq dot com",
                  "website":"http:\/\/www.chinaz.com"
              }
}

ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
まとめ:関連配列はjavascriptオブジェクトに基づいて構築された分析です.上記の例では簡単に1つの配列json化されています.非utf-8符号化では、中国語文字はencodeされず、結果的に空の値が出るので、gb 2312符号化を使用してphpコードを書くと、では、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode 3.jsonケース2:
json_decode   :
	<?php   
	$arr = array(   
   		 'name' => '   ',   
   		 'nick' => '    ',   
   		 'contact' => array(   
        		'email' => '[email protected]',   
        		'website' => 'http://zhuoweida.blog.tianya.cn',   
   		 )   
	);   
	$json_string = json_encode($arr); 
	$obj = json_decode($json_string); //    $obj->name        
	$arr=json_decode($json_string,true);//       true       
	print_r($obj);
	print_r($arr);
	?>

結果:
{
      "name":"\u9648\u6bc5\u946b",
      "nick":"\u6df1\u7a7a",
      "contact":
              {
                "email":"shenkong at qq dot com",
                "website":"http:\/\/www.chinaz.com"
              }
}

まとめ:関連配列はjavascriptオブジェクトに従って構築されます
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
分析:符号化後に復号され、phpは対応する関数json_を提供します.decode、この関数を実行すると、オブジェクトまたは配列が得られます.
4.jsonケース3:
フロントと対話すると、jsonの役割が表示されます.
たとえば、javascriptコードは次のとおりです.
<script type="text/javascript">  
var obj = {
           "name":"\u9648\u6bc5\u946b",
           "nick":"\u6df1\u7a7a",
           "contact":
                    {
                      "email":"shenkong at qq dot com",
                      "website":"http:\/\/www.chinaz.com"
                    }
          };   
          alert(obj.name);   
</script> 

コード分析:上のコードは、jsonフォーマットデータを直接変数に割り当て、javascriptオブジェクトになります.これにより、objを簡単に遍歴することができます.
ヒント:javascriptでは、配列のアクセスはインデックスによってアクセスされます.オブジェクト属性へのアクセスは、オブジェクト名で行う.プロパティ名でアクセスする
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
5.jsonケース4:jsonドメイン間のデータ呼び出し:
例えば、プライマリコールファイルindex.html
<script type="text/javascript">  
	function getProfile(str) {   
    		var arr = str;   
    		document.getElementById('nick').innerHTML = arr.nick;   
	}   
</script> 
 
<body>
      <div id="nick"></div>
</body>

 
<script type="text/javascript" src="http://www.openphp.cn/demo/profile.php"></script>

例えば、呼び出されたファイルprofile.php
<?php   
$arr = array(   
   	'name' => '   ',   
    	'nick' => '    ',   
   		 'contact' => array(   
       			 'email' => '[email protected]',   
       			 'website' => 'http://zhuoweida.blog.tianya.cn',   
    		)   
       );   
$json_string = json_encode($arr);   
echo "getProfile($json_string)";   
?>  

コード分析:index.htmlはprofileを呼び出す.php,json文字列を生成し,getProfileにパラメータとして入力し,divにニックネームを挿入することで,ドメイン間データインタラクションが完了する.
6.jsはサーバ側が返すjson文字列をどのように解析しますか?
ajaxを使用してクライアントとサーバ側のインタラクションを行う場合、jqueryなどのフレームワークを適用しない前提で、一般的な方法はサーバ側にjson文字列を返し、クライアントでjavascriptオブジェクトに解析することです.解析に用いる方法は、evalまたはnew functionが一般的であるが、現在ie 8およびfirefox 3である.1原生を内蔵したjsonオブジェクトがある.
 1:
var strTest='{"a":"b"}';    JS  
var obj=eval("("+strTest+")") ; 

 2:
function strtojson(strTest){
	JSON.parse(str);
}

7.ケース5:対象のjson化
<?php
//1.  
class JsonTest{	
	var $id = 1;	
	var $name = 'heiyeluren';	
	$gender = ' ';
}
$obj = new JsonTest;
echo json_encode($obj)."<br /> ";
?>

       :
{
	"id":1,
	"name":"heiyeluren",
	"gender":"\u7537"
}

結論:オブジェクトのjson文字列はjavascriptオブジェクトに従って構築される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
8.ケース6:インデックス配列のjson化
<?php
$arr1 = array(1, 'heiyeluren', ' ');
echo json_encode($arr1)."<br /> ";
?>

       :
[
	1,
	"heiyeluren",
	"\u7537"
]

結論:純デジタルインデックス配列のjson文字列はjavascriptが認識できる配列に従って格納され、javascriptが認識できるオブジェクトに従って格納されるものではない.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
9.ケース7:関連配列のjson化
<?php
$arr2 = array("id"=>1, "name"=>'heiyeluren', "gender"=>' ');
echo json_encode($arr2)."<br /> ";
?>

       :
{
	"id":1,
	"name":"heiyeluren",
	"gender":"\u7537"
}

結論:関連インデックス配列のjson文字列はjavascriptオブジェクトの形式で構築される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
10.ケース8:多次元インデックス配列のjson化
<?php
$arr3 = array(array(1, 'heiyeluren', ' '), array(1, 'heiyeluren', ' '));
echo json_encode($arr3)."<br /> ";?>

       :
[
	[1,"heiyeluren","\u7537"],
	[1,"heiyeluren","\u7537"]
]

結論:多次元デジタルインデックス配列のjson文字列はjavascriptが認識できる配列に従って格納される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されたデータはjavascript配列として直接使用できます.
11.ケース9:多次元関連配列のjson化
<?php
$arr4 = array(
	array("id"=>1, "name"=>'heiyeluren', "gender"=>' '),
	array("id"=>1, "name"=>'heiyeluren', "gender"=>' ')
);
echo json_encode($arr4)."<br /> ";
?>

       :
[
	{"id":1,"name":"heiyeluren","gender":"\u7537"},
	{"id":1,"name":"heiyeluren","gender":"\u7537"}
]

結論:多次元関連インデックス配列は周辺がJavaScript配列であり,中間のインデックス配列がオブジェクトである.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されたデータはjavascript配列として直接使用できます.
12.ケース10:json形式のjavascriptオブジェクトの作成
jsonのフォーマットと構文:
var jsonobject={//オブジェクト内の属性構文(属性名と属性値がペアで現れる)propertyname:value,//オブジェクト内の関数構文(関数名と関数内容がペアで現れる)functionname:function(){...;)    };
注意:
①jsonobject--JSONオブジェクト名②propertyname--属性名③functionname--関数名④複数の「名前/値」の集合を囲む括弧のペア⑤属性名または関数名は任意の文字列、さらには空の文字列⑥カンマで、各「名前/値」のペアを区切るヒント:
1 javascriptでは、配列のアクセスはインデックスによってアクセスされます.オブジェクト属性へのアクセスは、オブジェクト名で行う.プロパティ名でアクセスする
②経由json_encode()化されたデータはjsが認識できるフォーマットであり、json_decode()化されたデータはphpで認識できるフォーマットであることはよく知られている
③経由json_encode()化して出力されるデータはjson形式のjavascriptオブジェクトで、フロントで直接jsオブジェクトとして使用できます