空の配列を json オブジェクトに変換する php メソッド: 1. "JSON_FORCE_OBJECT" を使用して json オブジェクトを変換します; 2. データ型変換を使用して空の配列を json オブジェクトに変換します; 3. ArrayObject を使用して空の配列をjsonオブジェクト。
この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター
PHP json_encode は空の配列を変換しますオブジェクトへ
問題の説明:
php は、PC、Android、ios などのクライアントにインターフェイスを提供します。json 形式のデータが返される場合, 返されるデータが配列でキーが文字列の場合、json化後にjsonObjectが返されますが、空の配列の場合はjsonArrayが返される可能性があり、データ構造の不一致により最終的にjsonの解析が失敗します。
例:
$arr = [ 'id' => 123., 'name' => 'andrew' , ]; $jsonRet = json_encode( $arr ); print_r( $jsonRet );
出力:
{ "id": 123, "name": "andrew" }
ただし、次の場合:
$arr = []; $jsonRet = json_encode($arr); print_r($jsonRet);
出力:
[ ]
配列は空です JsonObjectでもありますか?
方法 1:
JSON_FORCE_OBJECT を使用する
$arr = []; $jsonRet = json_encode($arr, JSON_FORCE_OBJECT); print_r($jsonRet);
この方法には欠点があります。例:
$arr = [ 'jsonArray' => [ '21', '12', '13' ], 'jsonObject' => [] ]; $jsonRet = json_encode($arr,JSON_FORCE_OBJECT); print_r($jsonRet);
出力:
{ "jsonArray": { "0": "21", "1": "12", "2": "13" }, "jsonObject": { } }
元の jsonArray も jsonObjectified されており、ローカルの変更はグローバルに影響を与えることはできません
メソッド 2
データ型変換を使用します
$bar = array(); $foo = (object)$bar; echo json_encode($foo);
方法 3 (推奨)
ArrayObject を使用する
$arr = [ 'jsonArray' => [ '21', '12', '13' ], 'jsonObject' => new \ArrayObject() ]; $jsonRet = json_encode($arr); print_r($jsonRet);
出力:
{ "jsonArray": [ "21", "12", "13" ], "jsonObject": { } }
[推奨学習: PHP ビデオ チュートリアル]
以上がPHPで空の配列をJSONオブジェクトに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。