2009-11-10 54 views
1

我想在PHP中將多個JSON對象合併爲一個。我遍歷JSON對象,解碼它們,解析出我想要保留的部分,並將它們存儲在我的php類的屬性中。php - 結合json和json_decode

假如我的JSON對象類似如下格式:

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

我想一切最終合併成一個JSON對象,像這樣。

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

我想我的類中的一個屬性陣列存儲在被調用函數iteratrivley:

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

但是我得到的「$這個 - >輸出過程中出現以下錯誤。 = $ list「行。

類stdClass的客體不能轉換成字符串

眼下$這個 - >輸出沒有初始值。什麼可能是暫時存儲「list」數組的最好方法,然後在遍歷所有json對象後重新格式化它們?

謝謝。

回答

7

你接近:

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

是的,你確實非常接近! cletus更接近 – 2009-11-10 06:59:13

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

這不是有效的/有意義的JSON。你有一個相同的密鑰(列表)在它的哈希兩次。你如何解決這個問題?

+0

我是json的新手,爲什麼它在這裏驗證http://www.jsonlint.com/? – minimalpop 2009-11-10 14:39:03

+0

因爲jsonlint不夠?限制不是句法,所以這可能是爲什麼。有關定義,請參閱:rfc-4627,第2.2節(或者考慮兩次 - 這非常直觀)。 – troelskn 2009-11-10 20:08:48