我的一个数据库字段中有一个json编码的字符串,例如
[{ “名称”: “汽车”, “价格”: “10”}]
我正在使用FosRestBundle以json格式返回DB-Values并返回上面的字符串 - 作为字符串 - 在此之前没什么特别的;)
如何转换此String,以便返回Json对象?
答案 0 :(得分:0)
您可以使用json_decode将此字符串解码为stdClass或关联数组。这是你在找什么?
编辑:这应该有用
public function myAction()
{
// do stuff
$string = '[{"name":"car","price":"10"}]';
$array = json_decode($string, true);
/* array is like
[
0 => [
'name' => string(3) "car"
'price' => string(2) "10"
]
]
*/
return $array;
}
答案 1 :(得分:0)
最后我找到了解决方案。
我的实体包含:
/**
* @var string
*
* @ORM\Column(name="options", type="string", nullable=true)
*/
private $options;
"选择"包含json编码的字符串。所以我用JMS Serilizer Annotation @Accessor尝试了它并编写了这个特定的getter:
/**
* Get optionsAsArray
*
* @return array
*/
public function getOptionsAsArray()
{
return (array)json_decode($this->options, true);
}
仍然出现错误"数组到字符串转换"。所以解决方案是,添加另一个注释@type并且JMSSerializer返回格式良好的JSON。
这就是实体的样子:
use JMS\Serializer\Annotation\Accessor;
use JMS\Serializer\Annotation\Type;
/* ... */
/**
* @var string
*
* @ORM\Column(name="options", type="string", nullable=true)
* @Accessor(getter="getOptionsAsArray")
* @Type("array")
*/
private $options;