diff --git a/src/Symfony/Component/HttpFoundation/JsonResponse.php b/src/Symfony/Component/HttpFoundation/JsonResponse.php index 075e500ba281e..ba1a9056948f8 100644 --- a/src/Symfony/Component/HttpFoundation/JsonResponse.php +++ b/src/Symfony/Component/HttpFoundation/JsonResponse.php @@ -144,6 +144,10 @@ public function setEncodingOptions($encodingOptions) { $this->encodingOptions = (int) $encodingOptions; + if ($this->content !== null) { + $this->data = $this->content; + } + return $this->setData(json_decode($this->data)); } diff --git a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php index 44f264700e2b0..8f261dd1de6bc 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php @@ -212,6 +212,26 @@ public function testSetContentJsonSerializeError() JsonResponse::create($serializable); } + + public function testDataAfterSettingEncodingOptions() + { + $response = new JsonResponse(); + $response->setData(array(array(1, 2, 3))); + + $this->assertEquals('[[1,2,3]]', $response->getContent()); + $response->setEncodingOptions(JSON_FORCE_OBJECT); + + $this->assertEquals('{"0":{"0":1,"1":2,"2":3}}', $response->getContent()); + } + + public function testContentAfterSettingEncodingOptionsToBeEmpty() + { + $response = new JsonResponse(); + $response->setContent('{"different":{"key":"value"}}'); + $response->setEncodingOptions(JSON_FORCE_OBJECT); + + $this->assertEquals($response->getContent(), '{"different":{"key":"value"}}'); + } } if (interface_exists('JsonSerializable')) {