PHP JSON
jsonとは何ですか?
JSON (JavaScript Object Notation) は、主にデータの送信に使用される軽量のデータ交換形式です。
JSON は、JavaScript オブジェクトで表される一連のデータを文字列に変換します。これにより、関数間で、または Web クライアントから非同期アプリケーションのサーバー側プログラムに簡単に渡すことができます。この文字列は少し奇妙に見えますが、JavaScript は簡単に解釈でき、JSON は「名前と値のペア」よりも複雑な構造を表現できます。たとえば、キーと値の単純なリストではなく、配列や複雑なオブジェクトを表現できます。
この章は理解するためのものであり、マスターすることに集中する必要はありません。
環境設定
php5.2.0 以降には JSON 拡張機能が組み込まれています。
JSON関数
json_encode
PHPのjson_encode()は、実行が成功した場合はJSONデータを返し、それ以外の場合はFALSEを返します。
構文
string json_encode ( $value [, $options = 0 ] )
パラメータ
· 値: エンコードする値。この関数は、UTF-8 でエンコードされたデータに対してのみ有効です。
· オプション: 次の定数で構成されるバイナリ マスク: JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS、JSON_NUMERIC_CHECK、JSON_PRETTY_PRINT、JSON_UNESCAPED_SLASHES、JSON_FORCE_OBJECT
例次の例は、PHP 配列を JSON 形式のデータに変換する方法を示しています。
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
上記コードの実行結果は以下の通りです:
{"a":1,"b":2,"c":3,"d":4,"e":5}
以下の例PHP オブジェクトを JSON 形式のデータに変換する方法を示します:
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
上記のコードの実行結果は次のとおりです:
{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20: 03 pm"}
json_decode
PHP json_decode() 関数は、JSON 形式の文字列をデコードし、PHP 変数に変換するために使用されます。
構文mixed json_decode ($json [,$assoc = false [, $ Depth = 512 [, $options = 0 ]]])
パラメータ・ json_string: デコードするJSON文字列 、 UTF-8 でエンコードされたデータである必要があります
· assoc: このパラメータが TRUE の場合は配列が返され、FALSE の場合はオブジェクトが返されます。
· 深さ: 再帰の深さを指定する整数型のパラメータ
· オプション: バイナリ マスク、現在は JSON_BIGINT_AS_STRING のみがサポートされています。
例次の例は、JSON データをデコードする方法を示しています。
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
上記コードの実行結果は、
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array( 5 ) {
["a"] => int(1)
["b"] => int(2)
["d; " ] => int(4)
["e"] => int(5)
}
PHP の Json 形式ルール
- 並列データ間にはカンマを使用します ( ", ") で区切られます
- マッピングはコロン (": ") で表されます- 並列データのコレクション (配列) は角括弧 ("[]") で表されます
- マッピングのコレクション (オブジェクト) は中括弧 ( "{ }") は次の文を表します: 「北京の面積は 16,800 平方キロメートル、常住人口は 1,600 万人。上海の面積は 6,400 平方キロメートル、常住人口は 1,800 万人。」
次のように json 形式で記述します。 6400,"Population": 1800}
]
PHPでjsonを操作する関数
暗号化json_encode
復号json_decode
<?php $arr_1 = array(); $arr_1['username'] = 'lisi'; $arr_1['age'] = 20; echo json_encode($arr_1);//{"username":"lisi","age":20} ?>次元の配列をjsonデータ形式に変換
<?php $arr_2 = array(); // 三维数组 $arr_2['member']['lisi']['job'] = "worker"; $arr_2['member']['lisi']['age'] = 30; $arr_2['member']['wangwu']['job'] = "student"; $arr_2['member']['wangwu']['age'] = 10; echo json_encode($arr_2); //{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}} ?>
オブジェクトをjsonデータ形式に変換
オブジェクトをjsonデータに変換する場合、パブリック変数のみが変換され、プライベート変数は変換されません<?php
class Person{
public $name = "public name";
protected $ptName = "protected name";
private $pName = "private name";
public function sayName(){
return $this->name;
}
}
$person1 = new Person();
echo json_encode($person1);//{"name":"public name"}
?>
Convert jsonデータ形式をオブジェクト型に変換
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2 ?>json データ形式を配列型に変換
<?php
$jsonStr = '{"key1":"value1","key2":"value2"}';
print_r(json_decode($jsonStr,true));//Array ( [key1] => value1 [key2] => value2 )
?>
json_decode($jsonStr,true); 2 番目のパラメータが true の場合、パラメータのデフォルトは false に変換されます。そしてデフォルトはオブジェクトに変換されます