我似乎无法获取数据到JSON正确
问题描述:
你好,我已经花了相当多的时间试图让我的数据看起来像这样在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;
}
答
您还没有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
在第一个字符串中执行'json_decode'。然后进行逆向工程。你将得到数组格式,然后相应地创建新的数组。 – itachi 2013-05-02 07:53:47
在发布的代码中,你永远不会分配'$ children [$ id] [“children”]',所以它不应该出现在json中(它是作为空数组存在的)。发布所有操作'$ children'数组的代码。 – petrch 2013-05-02 08:00:15
我添加了另一个尝试的编辑,通过创建一个类...与我的其他代码我刚刚开始一个新的尝试我不知道如何显示更多的$儿童,在其他$儿童... @ itachi我正在尝试json_decode到目前为止我似乎无法得到此功能工作,但生病继续努力,谢谢! – Baraa 2013-05-02 08:07:22