ホームページ >バックエンド開発 >PHPチュートリアル >JSON形式データを処理するPHPの古典的なケースのまとめ、JSONクラシックケース_PHPチュートリアル

JSON形式データを処理するPHPの古典的なケースのまとめ、JSONクラシックケース_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:52:171452ブラウズ

phpでjson形式のデータを処理する、jsonの古典的な事例まとめ

この記事では、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化

<&#63;php
$arr2 = array("id"=>1, "name"=>'heiyeluren', "gender"=>'男');
echo json_encode($arr2)."<br /> ";
&#63;>

浏览器输出结果:

{
  "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化

<&#63;php
$arr3 = array(array(1, 'heiyeluren', '男'), array(1, 'heiyeluren', '男'));
echo json_encode($arr3)."<br /> ";&#63;>

浏览器输出结果:

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

结论:多维数字索引数组的json字符串是按照javascript能够识别的数组来存储的。无法识别中文,所有的中文字符串没有被正确显示出来

分析:上述案例很简单的将一个数组json化了,需要指出的是在非utf-8编码下,中文字符将不可被encode,结果会出来空值,所以如果你使用gb2312编码编写php代码,那么就需要将包含中文的内容使用iconv或mb系列函数转化为utf-8后在json_encode

提示:输出的数据可以直接将其当做javascript数组使用

11.案例九:对多维关联数组的进行json化

<&#63;php
$arr4 = array(
  array("id"=>1, "name"=>'heiyeluren', "gender"=>'男'),
  array("id"=>1, "name"=>'heiyeluren', "gender"=>'男')
);
echo json_encode($arr4)."<br /> ";
&#63;>

浏览器输出结果:

[
  {"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 プログラミングのすべての人に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1127842.html技術記事 PHPでjson形式のデータを処理する典型的な事例まとめ JSONの典型的な事例 PHPでjson形式のデータを処理する方法をまとめた記事です。参考のために皆さんと共有してください。詳細は次のとおりです: 1. json の紹介...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。