PHPで空の配列をJSONオブジェクトに変換する方法

藏色散人
リリース: 2023-03-09 10:10:02
オリジナル
2994 人が閲覧しました

空の配列を json オブジェクトに変換する php メソッド: 1. "JSON_FORCE_OBJECT" を使用して json オブジェクトを変換します; 2. データ型変換を使用して空の配列を json オブジェクトに変換します; 3. ArrayObject を使用して空の配列をjsonオブジェクト。

PHPで空の配列を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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート