2014-07-17 2 views
0

json으로 인코딩 된 문자열이 내 DB 필드 중 하나에 있습니다.FosRestBundle에서 json 인코딩 된 문자열을 json 개체로 변환합니다.

[{ "이름": "자동차", "가격": "10"}]

내가 JSON 형식으로 DB-값을 반환 할 FosRestBundle을 사용하고 있는데 위의 문자열이 반환됩니다 -로 문자열 - 여기까지는 특별한 것이 없습니다.)

어떻게이 문자열을 변환하여 Json 객체가 반환 될 수 있습니까?

답변

0

작동합니다 마지막으로 나는 해결책을 찾아 냈다.

/** 
* @var string 
* 
* @ORM\Column(name="options", type="string", nullable=true) 
*/ 
private $options; 

"옵션"json으로 인코딩 된 문자열을 포함 :

내 법인이 포함되어 있습니다. 그래서 JMS Serilizer Annotation @Accessor으로 시도하고이 특정 게터 썼다 :

/** 
* Get optionsAsArray 
* 
* @return array 
*/ 
public function getOptionsAsArray() 
{ 
    return (array)json_decode($this->options, true); 
} 

아직도 오류 "문자열 변환 배열"을 가지고 있습니다. 그래서 해결책은 다른 주석 인 @type을 추가하고 JMSSerializer는 정형 된 JSON을 반환했습니다. 내가 json_decode 시도하지만 결과 객체 또는 배열 변수의 (내용 to0 문자열로 반환됩니다

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; 
0

이 문자열을 stdClass 또는 연관 배열 json_decode으로 디코딩 할 수 있습니다. 이게 너가 찾고있는거야?

편집 :이

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; 
} 
+0

내가 예상 그냥 "배열",된다

은 법인 모양을하는 것입니다 json_object로 변환 된 배열 값 – Chris

+0

하지만 "json_object"는 아무 의미도 없습니다. JSON 객체로 json 표기법으로 포맷 된 문자열을 말합니다. – AlixB

관련 문제