Symfony 在FosRestBundle中将json编码的字符串转换为json对象
我的一个DB字段中有一个json编码的字符串,例如 [{“名称”:“汽车”,“价格”:“10”}] 我使用FosRestBundle以json格式返回DB值,上面的字符串作为字符串返回,在此之前没有什么特别之处;)Symfony 在FosRestBundle中将json编码的字符串转换为json对象,symfony,fosrestbundle,jmsserializerbundle,Symfony,Fosrestbundle,Jmsserializerbundle,我的一个DB字段中有一个json编码的字符串,例如 [{“名称”:“汽车”,“价格”:“10”}] 我使用FosRestBundle以json格式返回DB值,上面的字符串作为字符串返回,在此之前没有什么特别之处;) 如何转换此字符串以返回Json对象?您可以将此字符串解码为stdClass或关联数组。这就是你要找的吗 编辑:这应该有用 public function myAction() { // do stuff $string = '[{"name":"car","price
如何转换此字符串以返回Json对象?您可以将此字符串解码为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;
}
最后我找到了解决办法 我的实体包含以下内容:
/**
* @var string
*
* @ORM\Column(name="options", type="string", nullable=true)
*/
private $options;
“选项”包含json编码的字符串。所以我尝试了一下,并写了这个特殊的getter:
/**
* Get optionsAsArray
*
* @return array
*/
public function getOptionsAsArray()
{
return (array)json_decode($this->options, true);
}
仍然出现错误“数组到字符串转换”。因此,解决方案是,添加另一个注释,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;
我尝试了json_解码,但结果对象或数组作为字符串返回到0(变量的内容只是“Array”,我希望数组值转换为json_对象,但“json_对象”没有任何意义。像您所说的“json对象”是一个用json符号格式化的字符串。