diff --git a/src/Model/Common/AbstractJsonDeserializeObject.php b/src/Model/Common/AbstractJsonDeserializeObject.php index 35092fa1a9..80854fd005 100644 --- a/src/Model/Common/AbstractJsonDeserializeObject.php +++ b/src/Model/Common/AbstractJsonDeserializeObject.php @@ -182,7 +182,19 @@ protected function getRaw($field, $default = null) */ public function jsonSerialize() { - return $this->toArray(); + return $this->toJson(); + } + + /** + * @return array + */ + protected function toJson() + { + $data = array_filter($this->typeData, function ($value) { + return !is_null($value); + }); + + return $data; } /** diff --git a/src/Model/Common/Money.php b/src/Model/Common/Money.php index 97d14607be..dcf5183659 100644 --- a/src/Model/Common/Money.php +++ b/src/Model/Common/Money.php @@ -28,7 +28,7 @@ public function fieldDefinitions() } /** - * @return mixed + * @return string */ public function __toString() { diff --git a/src/Model/Common/PriceDraft.php b/src/Model/Common/PriceDraft.php index 593d3f1345..85fbf3dd15 100644 --- a/src/Model/Common/PriceDraft.php +++ b/src/Model/Common/PriceDraft.php @@ -60,7 +60,7 @@ public function fieldDefinitions() /** * @param Money $money * @param Context|callable $context - * @return Price + * @return PriceDraft */ public static function ofMoney(Money $money, $context = null) { @@ -68,6 +68,9 @@ public static function ofMoney(Money $money, $context = null) return $price->setValue($money); } + /** + * @return string + */ public function __toString() { return $this->getValue()->__toString(); diff --git a/src/Model/Common/Reference.php b/src/Model/Common/Reference.php index cde1f77cf4..e73b72bcb6 100644 --- a/src/Model/Common/Reference.php +++ b/src/Model/Common/Reference.php @@ -31,12 +31,4 @@ public function fieldDefinitions() return $fieldDefinitions; } - - public function jsonSerialize() - { - $data = parent::jsonSerialize(); - unset($data['obj']); - - return $data; - } } diff --git a/tests/unit/Model/Common/ReferenceTest.php b/tests/unit/Model/Common/ReferenceTest.php index 400f604524..948951b620 100644 --- a/tests/unit/Model/Common/ReferenceTest.php +++ b/tests/unit/Model/Common/ReferenceTest.php @@ -7,6 +7,7 @@ namespace Commercetools\Core\Model\Type; use Commercetools\Core\Model\Common\Reference; +use Commercetools\Core\Model\Product\Product; use Commercetools\Core\Model\ProductType\ProductType; use Commercetools\Core\Model\ProductType\ProductTypeReference; @@ -45,4 +46,15 @@ public function testJsonSerialize() $this->assertJsonStringEqualsJsonString('{"typeId": "product-type", "id": "123456"}', json_encode($reference)); } + + public function testEmbeddedReferenceSerialize() + { + $type = ProductType::of()->setId('123456'); + $object = Product::of()->setProductType($type->getReference()); + + $this->assertJsonStringEqualsJsonString( + '{"productType": {"typeId": "product-type", "id": "123456"}}', + json_encode($object) + ); + } }