インターネット技術の継続的な発展に伴い、データ対話はインターネット アプリケーション開発の重要な部分になっています。 Web開発においては「データのやりとり」が特に重要です。データ形式の変換は、Web アプリケーション開発でも頻繁に使用されます。
データ対話において、JSON はデータ オブジェクトや配列を Web サイトやアプリケーションに渡すことができる非常に一般的なデータ形式です。 PHP は、厳密に型指定された解釈型スクリプト言語であり、他の言語と比較して、JSON 形式の解析と使用がより便利です。 PHP 開発では、JSON 形式の文字列を配列またはオブジェクトに変換することも非常に一般的な要件です。次に、この記事では、JSON オブジェクトを配列またはオブジェクト配列にすばやく変換する方法を紹介します。
JSON 形式とは何ですか?
JSON は JavaScript Object Notation の略称で、軽量のデータ交換形式です。 JSON はデータ交換用の言語であり、人間が読めるテキストを使用してデータを送信するキーと値のペアの構造です。
以下は簡単な JSON の例です。
1 2 3 4 5 6 7 8 | {
"name" : "bob" ,
"age" : 25,
"address" : {
"city" : "beijing" ,
"province" : "BJ"
}
}
|
ログイン後にコピー
JSON 形式のデータは中括弧で囲まれており、データはコロンで区切られたキーと値のペアの形式で存在します。 JSON オブジェクトの場合、そのキーはキーと値のペアがカンマで区切られた文字列である必要があります。上記の例では、name
、age
、address
が 3 つのキーで、対応する値は "bob"
,# です。 ##25 と別の JSON オブジェクト。
PHP での JSON 形式の解析
PHP には、JSON 文字列を解析するための 2 つの組み込み関数
json_encode() と
json_decode() が用意されています。
- json_encode()
: PHP 配列またはオブジェクトを JSON 文字列に変換します。
- json_decode()
: JSON 形式の文字列を PHP 配列またはオブジェクトに変換します。
次の例は、
json_encode() を使用して PHP 配列を JSON 形式の文字列に変換する方法を示しています。
1 2 3 4 | $myArr = array ( 'name' => 'Bob' , 'age' => 25, 'address' => array ( 'city' => 'beijing' , 'province' => 'BJ' ));
$jsonStr = json_encode( $myArr );
echo $jsonStr ;
|
ログイン後にコピー
同様に、
json_decode() 関数を使用して、JSON 形式の文字列を PHP 配列に変換できます。
1 2 3 4 | $jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}' ;
$myArr = json_decode( $jsonStr , true);
print_r( $myArr );
|
ログイン後にコピー
json_decode() 関数の戻り値は PHP 配列であることがわかります。 PHP オブジェクトが必要な場合は、2 番目のパラメータを省略すると、PHP オブジェクトが返されます。以下に示すように:
1 2 3 4 5 | $jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}' ;
$myObj = json_decode( $jsonStr );
echo $myObj ->name;
echo $myObj ->address->province;
|
ログイン後にコピー
次に、この記事では、JSON オブジェクトを PHP 配列またはオブジェクト配列に変換する方法を紹介します。
JSON オブジェクトを配列に変換する
JSON 形式の文字列を PHP 配列に変換する方法はすでに紹介しました。ただし、場合によっては、外部から JSON オブジェクトを渡し、より便利な処理のためにそれを PHP 配列に変換する必要があります。 JSON オブジェクトを PHP 配列に変換する一般的な方法をいくつか紹介します。
1.
json_decode() を使用します。
Use
json_decode() 関数でもこの問題は解決できますが、2 番目のパラメーターを渡す必要があります。 。
1 2 3 4 | $jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }' ;
$jsonObj = json_decode( $jsonStr , true);
print_r( $jsonObj );
|
ログイン後にコピー
出力結果:
1 2 3 4 5 6 7 8 9 10 11 | Array
(
[name] => bob
[age] => 25
[address] => Array
(
[city] => beijing
[province] => BJ
)
)
|
ログイン後にコピー
この例では、
json_decode() 関数の 2 番目のパラメーターが
true に設定されています。これは、次のことを意味します。 JSON オブジェクトは PHP 配列に変換されます。
2. 強制型変換を使用する
PHP には、オブジェクトを強制的に配列に入れるという強制型変換の方法があります。このメソッドを使用すると、JSON オブジェクトを PHP 配列にすばやく変換できます。
1 2 3 4 5 | $jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }' ;
$jsonObj = json_decode( $jsonStr );
$jsonArr = ( array ) $jsonObj ;
print_r( $jsonArr );
|
ログイン後にコピー
出力結果:
1 2 3 4 5 6 7 8 9 10 11 | Array
(
[name] => bob
[age] => 25
[address] => stdClass Object
(
[city] => beijing
[province] => BJ
)
)
|
ログイン後にコピー
強制型変換を使用する場合、出力結果の
stdClass オブジェクトを PHP 配列に変換する必要があることに注意してください。このとき、ループ再帰を利用することで問題を解決できます。この問題を回避するには、通常、
json_decode() 関数を使用して JSON オブジェクトを PHP 配列に変換することをお勧めします。
JSON オブジェクトをオブジェクト配列に変換する
JSON オブジェクトを PHP オブジェクト配列に変換することもできます。 PHP 開発では、実際には、JSON 配列を PHP オブジェクトの配列に変換する方が一般的です。 JSON オブジェクトをオブジェクト配列に変換する 2 つの一般的な方法を次に示します。
1.
json_decode()
を使用する
json_decode() とループ再帰を使用して、JSON オブジェクトを PHP オブジェクト配列に変換できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }' ;
$jsonObj = json_decode( $jsonStr );
$objArr = array ();
foreach ( $jsonObj as $key => $value ) {
if ( is_object ( $value )) {
$objArr [ $key ] = $this ->getJSONObj( $value );
} else if ( is_array ( $value )) {
$arr = array ();
foreach ( $value as $item ) {
if ( is_object ( $item )) {
array_push ( $arr , $this ->getJSONObj( $item ));
} else {
array_push ( $arr , $item );
}
}
$objArr [ $key ] = $arr ;
} else {
$objArr [ $key ] = $value ;
}
}
var_dump( $objArr );
|
ログイン後にコピー
ここの
getJSONObj() 関数は、JSON オブジェクトを PHP オブジェクトの配列に変換して返します。
2. array_map() 関数を使用する
ループ再帰メソッドに加えて、
array_map() 関数と匿名関数を使用して JSON オブジェクトを次の形式に変換することもできます。 PHP オブジェクト配列のコードは次のとおりです:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }' ;
$jsonObj = json_decode( $jsonStr );
$objArr = ( array ) $jsonObj ;
$objArr = array_map ( function ( $item ) {
if ( is_object ( $item )) {
return $this ->getJSONObj( $item );
} elseif ( is_array ( $item )) {
return array_map ( function ( $sub_item ) {
return ( is_object ( $sub_item )) ? $this ->getJSONObj( $sub_item ) : $sub_item ;
}, $item );
} else {
return $item ;
}
}, $objArr );
var_dump( $objArr );
|
ログイン後にコピー
上記は、JSON オブジェクトをオブジェクト配列に変換する 2 つの一般的な方法であり、各方法は独自のニーズに応じて柔軟に使用できます。
概要
この記事では、JSON 形式のデータを PHP 配列またはオブジェクト配列に変換する方法を紹介します。 PHP 開発における JSON 形式と配列間の変換には、
json_encode() 関数と
json_decode() 関数が非常に便利なツールです。 JSON オブジェクトを PHP 配列またはオブジェクト配列に変換するには、さまざまな方法から選択できます。読者は、実際の開発ニーズに基づいて実装に最適な方法を選択できます。
以上がPHPでJSONオブジェクトを配列またはオブジェクト配列に素早く変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。