PHP JSON

jsonとは何ですか?

JSON (JavaScript Object Notation) は、主にデータの送信に使用される軽量のデータ交換形式です。
JSON は、JavaScript オブジェクトで表される一連のデータを文字列に変換します。これにより、関数間で、または Web クライアントから非同期アプリケーションのサーバー側プログラムに簡単に渡すことができます。この文字列は少し奇妙に見えますが、JavaScript は簡単に解釈でき、JSON は「名前と値のペア」よりも複雑な構造を表現できます。たとえば、キーと値の単純なリストではなく、配列や複雑なオブジェクトを表現できます。

この章は理解するためのものであり、マスターすることに集中する必要はありません。

環境設定

php5.2.0 以降には JSON 拡張機能が組み込まれています。


JSON関数


QQ截图20161009100513.png

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

1次元配列をjsonデータ形式に変換

<?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 に変換されます。そしてデフォルトはオブジェクトに変換されます

学び続ける
||
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜