2016-05-22 7 views
0

JSON_FORCE_OBJECTは、PHPで有名なjson_encode関数に渡されるフラグです。 documentionとしてJSON_FORCE_OBJECTの代わりにJSON_FORCE_ARRAYというものがありますか?

は言う:

JSON_FORCE_OBJECT(整数)が非連想配列が使用されるアレイ ではなくオブジェクトを出力します。出力の受信者 がオブジェクトを必要とし、配列が空の場合に特に便利です。 PHP 5.3.0以降で利用可能です。

強制的に旗を見つけることができませんでした。プログラム的な方法はありますか?

+0

あなたのニーズに合った 'json_encode(array_values($ ar)) 'のようなものがありますか? –

+0

JSON_FORCE_OBJECTフラグを指定しないと、非結合配列は配列 – splash58

+0

@JonStirlingとしてコード化されます。動作しませんでした。コードサンプルを作成して質問に追加しようとします。あなたのご意見については – Dorad

答えて

1

オブジェクトを非結合配列としてエンコードするのは、損失の多い操作です。オブジェクトプロパティ名/配列キーは失われます。このため、json_encode()はオブジェクトを非結合配列としてエンコードする方法を提供しません。

PHP 5.4以降、クラスはJsonSerializableインターフェイスを実装できます。このインターフェイス(jsonSerialize())によって宣言されたメソッドはjson_encode()によって呼び出され、json_encode()によって生成されたテキスト表現に配置する必要があるオブジェクトデータを返します。

あなたは(プロパティ名なし)オブジェクトのプロパティの値のみをエンコードしたい場合は、このようにそれを実装することができます

class MyClass implements JsonSerializable 
{ 
    public function jsonSerialize() 
    { 
     return array_values((array)$this); 
    } 
} 

(あなたがオブジェクトを復元することはできないということに注意してください(json_decode()を使用して)json_encode()の出力から一部の情報がエンコード中に失われたため(プロパティの名前)。

関連する問題