ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルで json_decode() と json_encode() を使用する方法

php_PHP チュートリアルで json_decode() と json_encode() を使用する方法

WBOY
WBOYオリジナル
2016-07-21 15:19:09840ブラウズ

1.json_decode()

json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode — 文字列を JSON 形式でエンコードします

Description
mixed json_decode ( string $json [, bool $assoc ] )
JSON 形式の文字列を受け入れ、それを PHP 変数に変換します。

パラメータ

json
デコードされる JSON 文字列形式の文字列。

assoc
このパラメータが TRUE の場合、オブジェクトの代わりに配列が返されます。


オブジェクトを返すか、オプションの assoc パラメーターが TRUE の場合は、代わりに連想配列が返されます

Example

例 #1 json_decode() の例

コードをコピーします コードは次のとおりです。
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; json));
var_dump(json_decode($json, true));
["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) }


コードをコピー

コードは次のとおりです:


$data='[{"Name":"a1","Number":" 123","続き番号":"000","QQNo":""},{"名前 ":"a1","番号":"123","続き番号":"000","QQNo":"" },{"名前":"a1","番号":"123","Contno" :"000","QQNo":""}]';
echo json_decode($data)


結果は:



コードをコピーします
コードは次のとおりです:
Array ( [0] => ; stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => ; 000 [QQNo] => ) [1] => stdClass オブジェクト ( [名前] => a1 [番号] => 123 [連続番号] => 000 [QQNo] => ) [2] = > stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [ QQNo] => ) ) json_decode() でコンパイルされたオブジェクトがオブジェクトであることがわかりますjson_decode($data,true) を出力してみます


コードをコピーします
コードは次のとおりです:

echo json_decode ($data,true) 結果:


コードは次のとおりです:

Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [ 1] => 配列 ( [名前] => a1 [番号] => 123 [連続番号] => 000 [QQNo] => ) [2] => 配列 ( [名前] => a1 [Number] => 123 [Contno] => [QQNo] => ) ) 出力は連想配列であることがわかります。 data) はオブジェクトを出力し、 json_decode("$arr",true) は PHP 連想配列を強制的に生成します。 >= 1.2.0)
json_encode — JSON エンコード変数

バグを報告する 説明
string json_encode (mixed $value [, int $options = 0 ] )
値の JSON 形式を返す

バグを報告する
パラメーター エンコードされる値は、リソースタイプを除き、任意のデータタイプにすることができます
この関数は、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、JSON_UNESCAPED_UNICODE

バグを報告する 戻り値
が正常にエンコードされた場合は、JSON 形式で表される文字列が返され、失敗した場合は FALSE が返されます。
バグを報告する 変更ログ
バージョン 説明
5.4.0 options パラメーターは定数を追加します: JSON_PRETTY_PRINT、JSON_UNESCAPED_SLASHES、および JSON_UNESCAPED_UNICODE。
5.3.3 options パラメーターは定数 JSON_NUMERIC_CHECK を追加します。
5.3.0 オプションパラメータを追加しました


バグを報告する例

例 #1 json_encode() の例



コードをコピーします

コードは次のとおりです:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=> 5);

echo json_encode($arr);
?>
上記のルーチンは次のように出力します:

コードは次のとおりです: :1," b": 2,"c":3,"d":4,"e":5}

例 #2 json_encode() 関数での options パラメータの使用法


コードをコピー
コードは次のとおりです以下: < ;?php
$a = array('',"'bar'",'"baz"','&blong&', "xc3xa9");

echo "通常: " , json_encode($a) , "n";
echo "タグ: ", json_encode($a, JSON_HEX_TAG), "n";
echo "アポス: ", json_encode($a, JSON_HEX_APOS)
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE) ), "n";
echo "すべて: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "nn"; array: ", json_encode( $b), "n";
echo "オブジェクトとしての空の配列出力: ", json_encode($b, JSON_FORCE_OBJECT), "nn";

$c = array(array(1,2, 3));

echo "非連想配列を配列として出力: ", json_encode($c), "n";
echo "非連想配列をオブジェクトとして出力: ", json_encode($c, JSON_FORCE_OBJECT) nn";

$ d = array('foo' => 'bar', 'baz' => 'long');

echo "連想配列は常にオブジェクトとして出力されます: ", json_encode($d), "n";
echo "連想配列は常にオブジェクトとして出力されます: ", json_encode($d, JSON_FORCE_OBJECT), "nn"
?>


上記のルーチンは次のように出力します:



コードは次のとおりです:

通常: ["","'bar'",""baz"","&blong&","u00e9"]
タグ: ["u003Cfoou003E","'bar '",""baz""," &blong&","u00e9"]
Apos: ["","u0027baru0027",""baz"","&blong&","u00e9"] 引用: [ "","'bar '","u0022bazu0022","&blong&","u00e9"] アンプ: ["","'bar'",""baz"","u0026blongu0026 ","u00e9"] Unicode: [ "","'bar'",""baz"","&blong&","é"] すべて: ["u003Cfoou003E","u0027baru0027"," u0022bazu0022","u0026blongu0026","é" ]
配列としての空の配列出力: []
オブジェクトとしての空の配列出力: {}

配列としての非結合配列出力: [[1,2,3]]
非連想配列はオブジェクトとして出力されます: {" 0":{"0":1,"1":2,"2":3}}

連想配列は常にオブジェクトとして出力されます: {"foo":"bar" ,"baz":"long"}
連想配列は常にオブジェクトとして出力されます: {"foo":"bar","baz":"long"}


例 #3 連続配列と非連続配列の例



コードをコピーします

コードは次のとおりです:

echo "continuous array".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong" ); var_dump( $sequential, json_encode($sequential) );
echo PHP_EOL."不連続配列".PHP_EOL = array(1=>"foo", 2=> "bar", 3=>"baz", 4=>" blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
); "生成された不連続な配列を削除します。連続配列値を削除することによって".PHP_EOL;
unset($sequential[1] );
var_dump(
$sequential,
json_encode($sequential)
);
?>


上記のルーチンは次のように出力します:



コードをコピーします

コードは次のとおりです。


連続配列
array( 4) { [0]=>
string(3) "foo"
[1]=> ) "バー"
[2]=> string(3) "baz" [ 3]=> string(5) "blong" }
string(27) "["foo","bar" ,"baz","blong"]"

非連続配列
array(4) {
[1]=>
string(3) "foo"
[2]=>
string(3) " bar"
[3]=>
string(3) "baz"
[4]= >
string(5) "blong"
}
string(43) "{"1":"foo"," 2":"bar","3":"baz","4":"blong" }"

連続配列の値を削除して生成される非連続配列
array(3) {
[0]=> ;
string(3) "foo"
[2]=>
string(3) "baz"
string(5) "blong"
}
string(33) "{"0 ":"foo","2":"baz","3":"blong"} "





コードをコピー

コードは次のとおりです:
$obj->名前= 'a1';$obj->番号='123';
$obj->Contno= '000';


結果は次のとおりです。 :


コードをコピー コードは次のとおりです:
{"Name":"a1",
"Number":"123",
"Contno":"000"
}


あなたjson_encode() と json_decode() がコンパイルおよび逆コンパイルのプロセスであることがわかります。json は utf-8 でエンコードされた文字のみを受け入れるため、json_encode() のパラメーターは utf-8 でエンコードされている必要があります。そうしないと、空の文字または null が返されます。

http://www.bkjia.com/PHPjc/325399.html

tru​​ehttp://www.bkjia.com/PHPjc/325399.html技術記事 1.json_decode() json_decode (PHP 5 = 5.2.0, PECL json = 1.2.0) json_decode — JSON 形式の文字列のエンコード命令mixed json_decode ( string $json [, bool $assoc ] ) Accept...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。