Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 在FosRestBundle中将json编码的字符串转换为json对象_Symfony_Fosrestbundle_Jmsserializerbundle - Fatal编程技术网

Symfony 在FosRestBundle中将json编码的字符串转换为json对象

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

我的一个DB字段中有一个json编码的字符串,例如

[{“名称”:“汽车”,“价格”:“10”}]

我使用FosRestBundle以json格式返回DB值,上面的字符串作为字符串返回,在此之前没有什么特别之处;)


如何转换此字符串以返回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符号格式化的字符串。