この記事では、phpでjson形式のデータを処理する方法をまとめています。参考のために皆さんと共有してください。詳細は次のとおりです:
1.jsonの紹介:
jsonとは何ですか?
簡単に言うと、JSON は JavaScript オブジェクトで表されるデータのセットを文字列に変換し、関数間で、または Web クライアントからサーバー側のプログラムに簡単に渡すことができます。
平たく言えば、PHP のシリアル化された文字列のようなデータ ストレージ形式です。
これは一種のデータ記述でもあります。たとえば、配列をシリアル化して保存すると、同じことが json にも当てはまりますが、クライアント側の JavaScript との間の対話のためのブリッジが構築されます。サーバーサイドのphp。
jsonの使い方
php5.2 以降のバージョンには json サポートが組み込まれているため、2 つの主要な関数があります:
json_encode(): エンコーディング、json 文字列を生成します
json_decode(): デコード
注: json_encode() 関数でエンコードした後、次のような json 形式の文字列が返されます: $json = '{"a":1,"b":2,"c":3," d" :4,"e":5}'; 文字列をjson形式で出力すると、json形式のjavascriptオブジェクトが得られます
2.json ケース 1:
json_encodeの使用法:
リーリー結果:
リーリーヒント:出力データ自体はjson形式のjsオブジェクトであるため、フロントページで直接jsonオブジェクトとして使用できます
。概要: 連想配列はJavaScriptオブジェクトに従って構築されます
分析: 上記のケースは配列の単純な json 化です。非 utf-8 エンコードでは中国語の文字はエンコードされず、結果は null 値になるため、gb2312 エンコードを使用すると注意が必要です。 PHP コードを記述するには、iconv または mb シリーズ関数を使用して中国語を含むコンテンツを utf-8 に変換し、json_encode で使用する必要があります
3.json ケース 2:
json_decodeの使用法:
リーリー結果:
リーリー概要: 連想配列は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 文字列をどのように解析しますか?
jQuery などのフレームワークが適用できないことを前提として、クライアントとサーバー間の対話に ajax を使用する場合、一般的なアプローチは、サーバーに json 文字列を返し、それをクライアントで JavaScript オブジェクトに解析することです。 。解析時に使用されるメソッドは一般的に eval または new function であり、現在 ie8 と firefox3.1 にはネイティブ json オブジェクトが組み込まれています。
例 1:
リーリー例 2:
リーリー7. ケース 5: オブジェクトの JSON 化
リーリーブラウザ出力:
リーリー結論: オブジェクトの json 文字列は、JavaScript オブジェクトに従って構築されます。中国語を認識できません。中国語の文字列はすべて正しく表示されません
分析: 上記のケースは、配列の単純な json 化です。非 utf-8 エンコードでは、中国語の文字はエンコードされず、結果は null 値になることに注意してください。 gb2312 エンコードを使用して PHP コードを記述する場合は、iconv または mb シリーズ関数を使用して中国語を含むコンテンツを utf-8 に変換し、json_encode で使用する必要があります
ヒント:出力データ自体はjson形式のjsオブジェクトであるため、フロントページで直接jsonオブジェクトとして使用できます
。8. ケース 6: インデックス配列の JSON 化
リーリーブラウザ出力:
[ 1, "heiyeluren", "\u7537" ]
结论:纯数字索引数组的json字符串是按照javascript能够识别的数组来存储的,而不是按照javascript能够识别的对象来存储的。无法识别中文,所有的中文字符串没有被正确显示出来
分析:上述案例很简单的将一个数组json化了,需要指出的是在非utf-8编码下,中文字符将不可被encode,结果会出来空值,所以如果你使用gb2312编码编写php代码,那么就需要将包含中文的内容使用iconv或mb系列函数转化为utf-8后在json_encode
9.案例七:关联数组的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,结果会出来空值,所以如果你使用gb2312编码编写php代码,那么就需要将包含中文的内容使用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据本身就是json格式的js对象,因为没有带引号,所以在前台页面可以直接将其当做json对象使用
10.案例八:对多维索引数组的进行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,结果会出来空值,所以如果你使用gb2312编码编写php代码,那么就需要将包含中文的内容使用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据可以直接将其当做javascript数组使用
11.案例九:对多维关联数组的进行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,结果会出来空值,所以如果你使用gb2312编码编写php代码,那么就需要将包含中文的内容使用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据可以直接将其当做javascript数组使用
12.案例十:json格式的javascript对象的创建
json的格式与语法:
var jsonobject= { //对象内的属性语法(属性名与属性值是成对出现的) propertyname:value, //对象内的函数语法(函数名与函数内容是成对出现的) functionname:function(){...;} };
注意:
①jsonobject -- JSON对象名称
②propertyname -- 属性名称
③functionname -- 函数名称
④一对大括号,括起多个"名称/值"的集合
⑤属性名或函数名可以是任意字符串,甚至是空字符串
⑥逗号用于隔开每对"名称/值"对
提示:
①在javascript中,数组的访问是通过索引来访问的; 对象属性的访问是通过 对象名.属性名 来访问的
②经过json_encode()化而的数据都是js能够识别的格式,而经过json_decode()化的数据都是php能够识别的格式,这一点大家心里要清楚
③经过json_encode()化而输出的数据都是json格式的javascript对象,在前台可直接将其当做js对象使用
另外,本站还提供了如下格式化与转换工具方便大家使用:
php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
JavaScript代码美化/压缩/格式化/加密工具:
http://tools.jb51.net/code/jscompress
在线XML格式化/压缩工具:
http://tools.jb51.net/code/xmlformat
さらに PHP 関連のコンテンツに興味のある読者は、このサイトの特別トピック「PHP における json 形式のデータ操作スキルのまとめ」、「php ファイル操作のまとめ」、「PHP の操作とオペレーターの使用方法のまとめ」をチェックしてください。 、「PHP ネットワーク プログラミング スキルの概要」、「PHP 基本構文の入門チュートリアル」、「PHP Office ドキュメント スキルの概要 (Word、Excel、Access、PPT を含む)」、「PHP の日付と時刻の使用方法の概要」、「はじめに」 PHPオブジェクト指向プログラミングチュートリアル』『PHP文字列(ストリング)使い方まとめ』『php+mysqlデータベース操作入門チュートリアル』『php共通データベース操作スキルまとめ』
この記事が PHP プログラミングのすべての人に役立つことを願っています。