无法在magento 2中获取jsonDecode

时间:2017-06-06 03:49:54

标签: json magento2

Magento 1.x有自己的JSON解码功能:

Mage::helper('core')->jsonDecode($array);

那么如何在Magento 2中使用JSON Decode。

3 个答案:

答案 0 :(得分:0)

使用magento 2为json decode

尝试以下代码
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$jsonManager = $objectManager->get('\Magento\Framework\Json\Decoder');
return $jsonManager->decode($data);

答案 1 :(得分:0)

根据This Answer

方法1:

echo $this->helper(\Magento\Framework\Json\Helper\Data::class)->jsonDecode($array);

或者

$jsonHelper = $this->helper('Magento\Framework\Json\Helper\Data');
echo $jsonHelper->jsonDecode($array);

方法2:

 /**
 * Constructor.
 * 
 * @param \Magento\Framework\Json\Helper\Data $jsonHelper
 */
public function __construct(\Magento\Framework\Json\Helper\Data $jsonHelper)
{
    $this->jsonHelper = $jsonHelper;
}

/**
 * @param array $dataToDecode
 * @return string
 */
public function decodeSomething(array $dataToDecode)
{
    $decodedData= $this->jsonHelper->jsonDecode($dataToDecode);

    return $decodedData;
}

答案 2 :(得分:0)

在当前版本的Magento2(2.2.3)中,\Magento\Framework\Json\Helper\Data类已弃用,可能在将来的版本中不再使用。因此,强烈建议使用\Magento\Framework\Serialize\Serializer\Json类来解码json字符串或将数组编码为json字符串。

    /**
     *
     * @var \Magento\Framework\Serialize\Serializer\Json
     */
    protected $_jsonSerializer;

    public function __construct(
        ...
        \Magento\Framework\Serialize\Serializer\Json $jsonSerializer,
        ...
    ) {
        ...
        $this->_jsonSerializer = $jsonSerializer;
        ...
    }

    public function decodeJsonString($jsonString)
    {
        return $this->_jsonSerializer->unserialize($jsonString);
    }

    public function encodeArray($array)
    {
        return $this->_jsonSerializer->serialize($array);
    }