vij*_*y b 4 json magento magento2
Magento有自己的json编码和解码功能:
Mage::helper('core')->jsonEncode($array);
Run Code Online (Sandbox Code Playgroud)
以上代码在Magento 2中折旧.那么如何使用jsonEncode,我必须扩展使用json Encode?
Igo*_*nko 17
Magento 2方式是Magento\Framework\Json\Helper\Data使用DI功能传递(见打击).不要使用$this->helper()和objectManager.此功能很快就会被弃用.
/**
* @var \Magento\Framework\Json\Helper\Data
*/
protected $jsonHelper;
/**
* Constructor.
*
* @param \Magento\Framework\Json\Helper\Data $jsonHelper
*/
public function __construct(\Magento\Framework\Json\Helper\Data $jsonHelper)
{
$this->jsonHelper = $jsonHelper;
}
/**
* @param array $dataToEncode
* @return string
*/
public function encodeSomething(array $dataToEncode)
{
$encodedData = $this->jsonHelper->jsonEncode($dataToEncode);
return $encodedData;
}
Run Code Online (Sandbox Code Playgroud)
\Magento\Framework\Json\Helper\Data从Magento 2.2开始不推荐使用using ,对于> = 2.2的版本,可以使用SerializerInterface
来自Magento 2 devdocs:https ://devdocs.magento.com/guides/v2.2/extension-dev-guide/framework/serializer.html#json-default
use Magento\Framework\Serialize\SerializerInterface;
/**
* @var SerializerInterface
*/
private $serializer;
public function __construct(SerializerInterface $serializer) {
$this->serializer = $serializer;
}
public function encodeSomething($data) {
return $this->serializer->serialize($data)
}
public function decodeSomething($data) {
return $this->serializer->unserialize($data)
}
Run Code Online (Sandbox Code Playgroud)
最后调用一个运行json_encode()和json_decode()的类https://github.com/magento/magento2/blob/2.2/lib/internal/Magento/Framework/Serialize/Serializer/Json.php
所以,如果你在2.1或更低的运行,你可以使用PHP函数json_encode()和json_decode(),并得到相同的结果,或使用已弃用\Magento\Framework\Json\Helper\Data
| 归档时间: |
|
| 查看次数: |
8406 次 |
| 最近记录: |