@@ -29,24 +29,65 @@ class Json extends AbstractResult
2929 protected $ json ;
3030
3131 /**
32- * @param \Magento\Framework\Translate\InlineInterface $translateInline
32+ * @var \Magento\Framework\Serialize\Serializer\Json
3333 */
34- public function __construct (InlineInterface $ translateInline )
35- {
34+ private $ serializer ;
35+
36+ /**
37+ * @param InlineInterface $translateInline
38+ * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
39+ * @throws \RuntimeException
40+ */
41+ public function __construct (
42+ InlineInterface $ translateInline ,
43+ \Magento \Framework \Serialize \Serializer \Json $ serializer = null
44+ ) {
3645 $ this ->translateInline = $ translateInline ;
46+ $ this ->serializer = $ serializer ?: \Magento \Framework \App \ObjectManager::getInstance ()
47+ ->get (\Magento \Framework \Serialize \Serializer \Json::class);
3748 }
3849
3950 /**
4051 * Set json data
4152 *
42- * @param mixed $data
43- * @param boolean $cycleCheck Optional; whether or not to check for object recursion; off by default
44- * @param array $options Additional options used during encoding
45- * @return $this
53+ * @param array|string|\Magento\Framework\DataObject $data
54+ * @param bool $cycleCheck
55+ * @param array $options
56+ * @return Json
57+ * @throws \InvalidArgumentException
58+ * @throws \Magento\Framework\Exception\LocalizedException
59+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
60+ * @deprecated
61+ * @see Json::setArrayData
62+ * @see Json::setJsonData
4663 */
4764 public function setData ($ data , $ cycleCheck = false , $ options = [])
4865 {
49- $ this ->json = \Zend_Json::encode ($ data , $ cycleCheck , $ options );
66+ if ($ data instanceof \Magento \Framework \DataObject) {
67+ return $ this ->setArrayData ($ data ->toArray ());
68+ }
69+
70+ if (is_array ($ data )) {
71+ return $ this ->setArrayData ($ data );
72+ }
73+
74+ if (is_string ($ data )) {
75+ return $ this ->setJsonData ($ data );
76+ }
77+
78+ throw new \Magento \Framework \Exception \LocalizedException (
79+ new \Magento \Framework \Phrase ('Invalid argument type ' )
80+ );
81+ }
82+
83+ /**
84+ * @param array $data
85+ * @return $this
86+ * @throws \InvalidArgumentException
87+ */
88+ public function setArrayData (array $ data )
89+ {
90+ $ this ->setJsonData ($ this ->serializer ->serialize ($ data ));
5091 return $ this ;
5192 }
5293
0 commit comments