2009-11-10 9 views
1

PHP에서 여러 개의 JSON 객체를 하나의 객체로 결합하려고합니다. 나는 JSON objets을 반복하고, 디코드하고, 유지하려는 부분을 파싱하고, PHP 클래스의 속성에 저장합니다.php - json을 json_decode와 결합하기

가정하면 내 JSON 객체의 형식은 다음과 같이 :

{ 
    "lists" : { 
     "list" : [ 
      { 
       "termA" : 2 , 
       "termB" : "FOO" 
      } 
     ] 
    } 
} 

내가 결국 지금과 같은 JSON 객체로 모든 것을 결합하려는. 내가 iteratrivley을 호출되는 함수 내 클래스 내에서 속성의 배열을 저장하기 위해 노력하고있어

{ 
    "lists" : { 
     "list" : [ 
      { 
       "termA" : 2 , 
       "termB" : "FOO" 
      }, 
      { 
       "termA" : 2 , 
       "termB" : "FOO" 
      } 
     ] 
    } , 
    "lists" : { 
     "list" : [ 
      { 
       "termA" : 4 , 
       "termB" : "BAR" 
      }, 
      { 
       "termA" : 4 , 
       "termB" : "BAR" 
      } 
     ] 
    } 
} 

:

private function parseData($json){ 
     $decodeData = json_decode($json); 
      $list = $decodeData->lists; 
     $this->output .= $list 
    } 

나는 "$ this-> 출력시 다음과 같은 오류가 그러나

. = $ list "라인. 클래스 stdClass의

개체

지금 $ this->을 출력에는 초기 값이없는 문자열

로 변환 할 수 없습니다. "list"배열을 임시로 저장 한 다음 모든 json 객체를 통과 한 후 다시 포맷하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

7

당신은 가까웠다 :

유효/의미 JSON 아니다
private function parseData($json){ 
    $decodeData = json_decode($json); 
    $list = $decodeData['lists']; 
    $this->output .= $list 
} 
+0

예, 정말 가까이에있었습니다! cletus가 훨씬 더 가까워졌습니다. –

2
{ 
    "lists" : { 
     ... 
    } , 
    "lists" : { 
     ... 
    } 
} 

. 동일한 키 (목록)가있는 해시가 두 번 있습니다. 어떻게 해결할 수 있니?

+0

저는 json을 처음 사용합니다. 왜 여기에서 유효성을 검사합니까? http://www.jsonlint.com/? – minimalpop

+0

jsonlint가 부족하기 때문에? 제한은 통사론이 아니기 때문에 아마도 그 이유 일 것입니다. 참조 : rfc-4627, 정의 2.2 절 (또는 두번 생각해 보라 - 꽤 직관적이다). – troelskn