【javascript】phpによるjsonフォーマットデータ処理のまとめ
9145 ワード
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形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
まとめ:関連配列はjavascriptオブジェクトに基づいて構築された分析です.上記の例では簡単に1つの配列json化されています.非utf-8符号化では、中国語文字はencodeされず、結果的に空の値が出るので、gb 2312符号化を使用してphpコードを書くと、では、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode 3.jsonケース2:
結果:
まとめ:関連配列はjavascriptオブジェクトに従って構築されます
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
分析:符号化後に復号され、phpは対応する関数json_を提供します.decode、この関数を実行すると、オブジェクトまたは配列が得られます.
4.jsonケース3:
フロントと対話すると、jsonの役割が表示されます.
たとえば、javascriptコードは次のとおりです.
コード分析:上のコードは、jsonフォーマットデータを直接変数に割り当て、javascriptオブジェクトになります.これにより、objを簡単に遍歴することができます.
ヒント:javascriptでは、配列のアクセスはインデックスによってアクセスされます.オブジェクト属性へのアクセスは、オブジェクト名で行う.プロパティ名でアクセスする
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
5.jsonケース4:jsonドメイン間のデータ呼び出し:
例えば、プライマリコールファイルindex.html
例えば、呼び出されたファイルprofile.php
コード分析:index.htmlはprofileを呼び出す.php,json文字列を生成し,getProfileにパラメータとして入力し,divにニックネームを挿入することで,ドメイン間データインタラクションが完了する.
6.jsはサーバ側が返すjson文字列をどのように解析しますか?
ajaxを使用してクライアントとサーバ側のインタラクションを行う場合、jqueryなどのフレームワークを適用しない前提で、一般的な方法はサーバ側にjson文字列を返し、クライアントでjavascriptオブジェクトに解析することです.解析に用いる方法は、evalまたはnew functionが一般的であるが、現在ie 8およびfirefox 3である.1原生を内蔵したjsonオブジェクトがある.
7.ケース5:対象のjson化
結論:オブジェクトのjson文字列はjavascriptオブジェクトに従って構築される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
8.ケース6:インデックス配列のjson化
結論:純デジタルインデックス配列のjson文字列はjavascriptが認識できる配列に従って格納され、javascriptが認識できるオブジェクトに従って格納されるものではない.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
9.ケース7:関連配列のjson化
結論:関連インデックス配列のjson文字列はjavascriptオブジェクトの形式で構築される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されるデータ自体がjson形式のjsオブジェクトで、引用符が付いていないため、フロントページで直接jsonオブジェクトとして使用できます.
10.ケース8:多次元インデックス配列のjson化
結論:多次元デジタルインデックス配列のjson文字列はjavascriptが認識できる配列に従って格納される.中国語を認識できず、すべての中国語文字列が正しく表示されませんでした
分析:上記のケースは簡単に配列json化されていますが、非utf-8符号化では中国語文字はencodeにできず、結果的に空の値になることを指摘する必要があります.gb 2312符号化を使用してphpコードを記述する場合は、中国語を含むコンテンツをiconvまたはmbシリーズ関数を使用してutf-8に変換した後、json_encode
ヒント:出力されたデータはjavascript配列として直接使用できます.
11.ケース9:多次元関連配列のjson化
結論:多次元関連インデックス配列は周辺が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オブジェクトとして使用できます
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オブジェクトとして使用できます