diff --git a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php index 55ae69bd938e1..2b4c0208f6c27 100644 --- a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php @@ -150,6 +150,10 @@ public function decode($data, $format, array $context = array()) } fclose($handle); + if ($context['as_collection'] ?? false) { + return $result; + } + if (empty($result) || isset($result[1])) { return $result; } diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php index a5e5c256f34ad..ed43fc2bfd5e4 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php @@ -208,6 +208,22 @@ public function testDecodeCollection() , 'csv')); } + public function testDecodeOnlyOneAsCollection() + { + $this->encoder = new CsvEncoder(',', '"', '\\', '.'); + + $expected = array( + array('foo' => 'a'), + ); + + $this->assertEquals($expected, $this->encoder->decode(<<<'CSV' +foo +a + +CSV + , 'csv', array('as_collection' => true))); + } + public function testDecodeToManyRelation() { $expected = array(