JsonSerializable
インターフェイスについて読んでください(クラスで実装されています)。あなたのクラスがインタフェースを実装している場合、それはクラスのインスタンスをエンコードする必要があるとき
class MyClassName implements JsonSerializable
{
public $Value;
public $OtherValue;
public function jsonSerialize()
{
return array(
'value' => $this->Value,
'otherValue' => $this->OtherValue,
);
}
}
は、json_encode()
方法jsonSerialize()
を呼び出します。
このメソッドは配列を返さなければならず、その配列はそれを生成したインスタンスの代わりにjson_encode()
でエンコードされます。
jsonSerialize()
メソッドから任意のものを返すことができます。プロパティを省略したり、クラスに存在しないプロパティを作成したり、値を計算したりすることができます。
json_decode()
で使用する逆の方法はありません。 PHPオブジェクトのクラスはJSON表現でエンコードされていないため、json_encode()
はオブジェクト(または結合配列)をstdClass
だけ作成できます。そのようなデコード方法は役に立たない。
しかし、デコード時には、配列またはstdClass
オブジェクトをクラスのコンストラクタに渡すのが簡単です。または、デコードされたデータを使用してオブジェクト状態を復元できる初期化メソッドに簡単に渡すことができます。
他の方法は、あなたが –
にエコー-INGの前に、オブジェクトの最初の文字を小文字にJSONの利用機能を受信したときにそのような機能があり、可能性'strtolower'のようにクラスに' toArray'のようなメソッドを追加するオプションがあります。これはエンコーディングなどのためにプロパティを返すものです。あなたがする必要があるのは、あなたが必要としている方法でデータを収集し、奇跡や単純な機能からの読解を期待することはありません。 –
@ N.B。いずれかの問題は、変数名を小文字にしたくないということです。だから私は単純に変数を小文字にすることはできません。 – UnkwnTech