2017-10-23 13 views
1

symfonyシリアライザを使用しています。しかし、もし私が--no-devフラグをつけたコンポーザーパッケージをインストールすると、代わりに配列の配列にあるオブジェクトの配列であると思われるデータがデシリアライズされます。symfonyシリアライザは--no-devで動作しません

$result = $this->get('serializer')->deserialize(
    $request->getContent(), 
    InputDto::class, 
    'json' 
); 

そして、私はDTOに注釈を使用し、逆シリアル化のために:

これはシリアライズあります。

これは、 "フィールド" は、オブジェクトの配列のためにDTOにどのように見えるかです:コードに基づいて

/** 
* @var OrderItemDto[]|Collection 
*/ 
private $items = []; 
+0

私達にあなたのコード –

+0

@TomaszMadeyski申し訳ありませんが表示されます。忘れました:) – Dinar

+0

また、このオブジェクトの配列は3番目のレベルにあることにも言及したいと思います。しかし、私は深度の設定を使用しません。 – Dinar

答えて

1

あなたはframeworkセクションの次の行にapp/config/config.yml に追加する必要があるオブジェクトのサブレベルを動作させるために:

property_info: 
    enabled: true 
2

https://github.com/symfony/serializer/blob/master/Encoder/JsonDecode.php#L84

あなたは

json_decode_associativeとしてfalseオプションを渡した場合
$result = $this->get('serializer')->deserialize(
    $request->getContent(), 
    InputDto::class, 
    'json', 
    ['json_decode_associative' => false] 
); 

配列に変換しようとしてはいけません。

http://php.net/manual/en/function.json-decode.php

+0

残念ながら、これは役に立たなかった。それはJSONオブジェクトをPHP stdClassにシリアライズしましたが、必要な型ではありません。 – Dinar

関連する問題