1

おそらく私は間違った方法で取り組んでいますが、オブジェクト (プリミティブを表す) を JSON の「プリミティブ」にシリアル化できるようにしたいと考えています。JsonSerializable Interface と json_encode の助けを借りて簡単ですが、JSM Serializer の助けを借りてこれを一般化できるようにしたいと思います。

私はインライン注釈をいじりましたが、オブジェクトをシリアル化するときに、オブジェクトを表す文字列が必須であるように見えますか? これは正しいです?可能であれば、どうすればこれを行うことができますか?

class ATest implements SingularValueObjectInterface, JsonSerializable
{
    /**
     * @JMS\Accessor(getter="get",setter="set")
     */
    private $value = 45;

    /**
     * @return string
     * @JMS\Inline
     */
    public function get()
    {
        return $this->value * $this->value;
    }

    public function jsonSerialize()
    {
        return $this->get();
    }

}

$serializer = \JMS\Serializer\SerializerBuilder::create()->build();
$a          = new ATest();



var_dump(json_encode($a), $serializer->serialize($a, 'json'));

string(4) "2025" <- I want this.
vs
"{"value":2025}"

たとえば、配列/コレクションを表すより複雑なオブジェクトもあります

4

0 に答える 0