Skip to content

Commit c4ee5ee

Browse files
Merge branch '2.4-develop' of github.com:magento-commerce/magento2ce into ACPT-488-ACPT-489-ACPT-490
2 parents a0eba20 + 65a1198 commit c4ee5ee

File tree

3 files changed

+47
-9
lines changed

3 files changed

+47
-9
lines changed

dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4246,6 +4246,7 @@
42464246
['Zend_Uri', 'Laminas\Uri\Uri'],
42474247
['Zend_Mime', 'Magento\Framework\HTTP\Mime'],
42484248
['Zend_Mail'],
4249+
['Zend_Json'],
42494250
['Magento\Framework\Encryption\Crypt', 'Magento\Framework\Encryption\EncryptionAdapterInterface'],
42504251
['Magento\Wishlist\Setup\Patch\Schema\AddProductIdConstraint'],
42514252
['Magento\Elasticsearch\Block\Adminhtml\System\Config\TestConnection'],

lib/internal/Magento/Framework/Json/Decoder.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,27 @@
55
*/
66
namespace Magento\Framework\Json;
77

8+
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
9+
810
/**
11+
* phpcs:ignore Magento2.Commenting.ClassAndInterfacePHPDocFormatting
912
* @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::unserialize
1013
*/
1114
class Decoder implements DecoderInterface
1215
{
16+
/**
17+
* @var JsonSerializer
18+
*/
19+
private JsonSerializer $jsonSerializer;
20+
21+
/**
22+
* @param JsonSerializer $serializer
23+
*/
24+
public function __construct(JsonSerializer $serializer)
25+
{
26+
$this->jsonSerializer = $serializer;
27+
}
28+
1329
/**
1430
* Decodes the given $data string which is encoded in the JSON format.
1531
*
@@ -18,6 +34,6 @@ class Decoder implements DecoderInterface
1834
*/
1935
public function decode($data)
2036
{
21-
return \Zend_Json::decode($data);
37+
return $this->jsonSerializer->unserialize((string) $data);
2238
}
2339
}

lib/internal/Magento/Framework/Json/Encoder.php

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,56 @@
55
*/
66
namespace Magento\Framework\Json;
77

8+
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
9+
use Magento\Framework\Translate\InlineInterface;
10+
811
/**
12+
* phpcs:ignore Magento2.Commenting.ClassAndInterfacePHPDocFormatting
913
* @deprecated 101.0.0 @see \Magento\Framework\Serialize\Serializer\Json::serialize
1014
*/
1115
class Encoder implements EncoderInterface
1216
{
1317
/**
1418
* Translator
1519
*
16-
* @var \Magento\Framework\Translate\InlineInterface
20+
* @var InlineInterface
21+
*/
22+
protected InlineInterface $translateInline;
23+
24+
/**
25+
* @var JsonSerializer
1726
*/
18-
protected $translateInline;
27+
private JsonSerializer $jsonSerializer;
1928

2029
/**
21-
* @param \Magento\Framework\Translate\InlineInterface $translateInline
30+
* @param InlineInterface $translateInline
31+
* @param JsonSerializer $serializer
2232
*/
23-
public function __construct(\Magento\Framework\Translate\InlineInterface $translateInline)
33+
public function __construct(InlineInterface $translateInline, JsonSerializer $serializer)
2434
{
2535
$this->translateInline = $translateInline;
36+
$this->jsonSerializer = $serializer;
2637
}
2738

2839
/**
2940
* Encode the mixed $data into the JSON format.
3041
*
31-
* @param mixed $data
42+
* @param mixed $valueToEncode
3243
* @return string
3344
*/
34-
public function encode($data)
45+
public function encode($valueToEncode)
3546
{
36-
$this->translateInline->processResponseBody($data);
37-
return \Zend_Json::encode($data);
47+
if (is_object($valueToEncode)) {
48+
if (method_exists($valueToEncode, 'toJson')) {
49+
return $valueToEncode->toJson();
50+
}
51+
52+
if (method_exists($valueToEncode, 'toArray')) {
53+
return self::encode($valueToEncode->toArray());
54+
}
55+
}
56+
$this->translateInline->processResponseBody($valueToEncode);
57+
58+
return $this->jsonSerializer->serialize($valueToEncode);
3859
}
3960
}

0 commit comments

Comments
 (0)