2013-05-02 48 views
0

你好,我已經花了相當多的時間試圖讓我的數據看起來像這樣在JSON作爲樣本:我似乎無法獲取數據到JSON正確

var json = { 
    "id": "347_0", 
    "name": "Nine Inch Nails", 
    "children": [{ 
     "id": "126510_1", 
     "name": "Jerome Dillon", 
     "data": { 
      "band": "Nine Inch Nails", 
      "relation": "member of band" 
     }, 
     "children": [{ 
      "id": "52163_2", 
      "name": "Howlin' Maggie", 
      "data": { 
       "band": "Jerome Dillon", 
       "relation": "member of band" 
      }, 
      "children": [] 
     }, { 
      "id": "324134_3", 
      "name": "nearLY", 
      "data": { 
       "band": "Jerome Dillon", 
       "relation": "member of band" 
      }, 
      "children": [] 
     }] 
    }, { 
     "id": "173871_4", 
     "name": "Charlie Clouser", 
     "data": { 
      "band": "Nine Inch Nails", 
      "relation": "member of band" 
     }, 
     "children": [] 
    }, { 
     "id": "235952_5", 
     "name": "James Woolley", 
     "data": { 
      "band": "Nine Inch Nails", 
      "relation": "member of band" 
     }, 
     "children": [] 
    }, 

我使用json_encode函數和我知道如何使數據到JSON我似乎就是無法創造任何東西,將輸出上面的JSON格式...例如我用下面的代碼:

foreach($relations as $rel){ 
     $data[$id]["relationTo"] = $rel["name"]; 
     $data[$id]["relation"] = $rel["relation"]; 
     $id = $id + 1; 
    } 
    $id = 0; 
    foreach($relations as $rel){ 
     $children[$id]["id"] = $id+1; 
     $children[$id]["name"] = $rel["sname"]; 
     $children[$id]["data"] = $data[$id]; 
     $id = $id + 1; 
    } 
    $relationsArray["id"] = 0; 
    $relationsArray["name"] = $rel["name"]; 
    $relationsArray["children"] = $children; 

    $json_content = json_encode($relationsArray); 

而這種輸出:

"id":0, 
"name":"Al", 
"children":[ 
    { 
    "id":1, 
    "name":"Brandon", 
    "data":{ 
     "relationTo":"Albaraa", 
     "relation":"Friend" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":2, 
    "name":"Shen", 
    "data":{ 
     "relationTo":"Albaraa", 
     "relation":"Friend" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":3, 
    "name":"Dan", 
    "data":{ 
     "relationTo":"Albaraa", 
     "relation":"Professor" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":4, 
    "name":"Bob", 
    "data":{ 
     "relationTo":"Albaraa", 
     "relation":"Boss" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":5, 
    "name":"Al", 
    "data":{ 
     "relationTo":"Albaraa", 
     "relation":"God Father" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":6, 
    "name":"Albaraa", 
    "data":{ 
     "relationTo":"Shen", 
     "relation":"Friend" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":7, 
    "name":"Brandon", 
    "data":{ 
     "relationTo":"Shen", 
     "relation":"Friend" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":8, 
    "name":"Dan", 
    "data":{ 
     "relationTo":"Shen", 
     "relation":"Professor" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":9, 
    "name":"Albaraa", 
    "data":{ 
     "relationTo":"Al", 
     "relation":"God Son" 
    }, 
    "children":[ 

    ] 
    }, 
    { 
    "id":10, 
    "name":"Bob", 
    "data":{ 
     "relationTo":"Al", 
     "relation":"Best Friends" 
    }, 
    "children":[ 

    ] 
    } 
] 
} 

等等......但我不能像上面看到的那樣讓孩子們的孩子們!

任何幫助將是驚人的謝謝!

編輯:

 class Child{ 
     public $id; 
     public $name; 
     public $children; 
     public $data; 

     public function __construct($id, $sname, $data, $rel){ 
      $this->children = array(); 
      $this->data = array(); 
      if ($rel){ 
       $this->id = $id+1; 
       $this->name = $sname;     
       $data = array(); 
       $data["relationTo"] = $rel["name"]; 
       $data["relation"] = $rel["relation"]; 
     $this->children[] = new Child($id, $rel["sname"],$data); 
      } 
      else { 
       $this->id = $id+1; 
       $this->name = $sname; 
       $this->data = $data; 
      } 
     }  
    } 
    $childrel = array(); 
    $id = 0; 
    foreach($relations as $rel){ 
     $childrel[] = new Child($id ,"","", $rel); 
     $id = $id + 1; 
    } 
+1

在第一個字符串中執行'json_decode'。然後進行逆向工程。你將得到數組格式,然後相應地創建新的數組。 – itachi 2013-05-02 07:53:47

+0

在發佈的代碼中,你永遠不會分配'$ children [$ id] [「children」]',所以它不應該出現在json中(它是作爲空數組存在的)。發佈所有操作'$ children'數組的代碼。 – petrch 2013-05-02 08:00:15

+0

我添加了另一個嘗試的編輯,通過創建一個類...與我的其他代碼我剛剛開始一個新的嘗試我不知道如何顯示更多的$兒童,在其他$兒童... @ itachi我正在嘗試json_decode到目前爲止我似乎無法得到此功能工作,但生病繼續努力,謝謝! – Baraa 2013-05-02 08:07:22

回答

0

您還沒有foreach循環之前分配值之前宣佈$孩子。因此,聲明這樣的數組,並將代碼更改爲:

$children = array(); 
$id = 0; 
    foreach($relations as $rel){ 
     $children[$id]["id"] = $id+1; 
     $children[$id]["name"] = $rel["sname"]; 
     $children[$id]["data"] = $data[$id]; 
     $id = $id + 1; 
    } 
+0

我實際上聲明對不起,我沒有在上面的代碼中包含這一點,但是我顯示了我得到的輸出,並且能夠將兒童輸入到第一個創建的ID /名稱中,但是我無法讓下一組兒童的孩子等...... – Baraa 2013-05-02 08:08:32

相關問題