From 93ee57b48a86137546a715cf60774ee77f71a5f2 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Wed, 24 Apr 2024 10:49:08 +0200 Subject: [PATCH] convert empty CSV header names into numeric keys --- .../Component/Serializer/Encoder/CsvEncoder.php | 14 ++++++++++---- .../Serializer/Tests/Encoder/CsvEncoderTest.php | 8 +++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php index 55f78b1d0e013..a2d4df909dce8 100644 --- a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php @@ -181,18 +181,24 @@ public function decode(string $data, string $format, array $context = []) $depth = $headerCount[$i]; $arr = &$item; for ($j = 0; $j < $depth; ++$j) { + $headerName = $headers[$i][$j]; + + if ('' === $headerName) { + $headerName = $i; + } + // Handle nested arrays if ($j === ($depth - 1)) { - $arr[$headers[$i][$j]] = $cols[$i]; + $arr[$headerName] = $cols[$i]; continue; } - if (!isset($arr[$headers[$i][$j]])) { - $arr[$headers[$i][$j]] = []; + if (!isset($arr[$headerName])) { + $arr[$headerName] = []; } - $arr = &$arr[$headers[$i][$j]]; + $arr = &$arr[$headerName]; } } diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php index 06cf6a0617d86..3d2163c06e923 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php @@ -218,7 +218,13 @@ public function testDecodeEmptyData() { $data = $this->encoder->decode("\n\n", 'csv'); - $this->assertSame([['' => null]], $data); + $this->assertSame([[0 => null]], $data); + } + + public function testMultipleEmptyHeaderNamesWithSeparator() + { + $this->encoder->decode(',. +,', 'csv'); } public function testEncodeVariableStructure() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy