【发布时间】:2010-02-09 10:07:28
【问题描述】:
现在我有一个这样的 json 代码:
{"1":
{
"text":"e1",
"children":
{
"1":
{
"text":"e1_site1",
"children":
{"1":"e1_site1_salarie1_nom"}
},
"3":
{
"text":"e1_site2",
"children":
{
"3":"e1_site2_sa1",
"4":"e1_site2_sa2"
}
}
}
},
"2":
{
"text":"e2",
"children":
{
"2":
{
"text":"e2_site2",
"children":
{
"2":"e2_site2_salarie2_nom"
}
}
}
}
}
我希望它是:
[
{
"text":"e1",
"children":
[
{
"text":"e1_site1",
"children":
[
{
"text":"e1_site1_salarie1_nom"
}
],
"text":
{
"text":"e1_site2",
"children":
[
{
"text":"e1_site2_sa1"
},
{
"text":"e1_site2_sa2"
}
]
}
],
"text":
{
"text":"e2",
"children":
[
{
"text":"e2_site2",
"children":
[
{
"text":"e2_site2_salarie2_nom"
}
]
}
]
}
我现在所做的,还没有完成:
$json = json_encode($entreprise);
$mode = array("/{\"[0-9]\":{\"text\"/", "/children\":{\"[0-9]\"/","/,\"[0-9]\":{\"/", "/,\"[0-9]\":\"/","(}})");
$replacement = array("[{\"text\"","children\":[{\"text\"",",\"text\":{\"",",\"text\":\"","}]");
$json = preg_replace($mode, $replacement, $json);
dump($json);
以及目前的结果:
[
{
"text":"e1",
"children":
[
{
"text":"e1_site1",
"children":
[
{
"text":"e1_site1_salarie1_nom"
}
],
"text":
{
"text":"e1_site2",
"children":
[
{
"text":"e1_site2_sa1",
"text":"e1_site2_sa2"
}
]
}
],
"text":
{
"text":"e2",
"children":
[
{
"text":"e2_site2",
"children":
[
{
"text":"e2_site2_salarie2_nom"
}
]
}
]
}
你知道如何用正则表达式达到理想的输出吗?
任何想法或建议将不胜感激!提前致谢。 ;)
编辑:
根据灵魂融合的建议更改了输出。是这样的:
[
{
"text":"e1",
"children":
{
"1":
{
"text":"e1_site1",
"children":
{
"1":"e1_site1_salarie1_nom"
}
},
"3":
{
"text":"e1_site2",
"children":
{
"3":"e1_site2_sa1",
"4":"e1_site2_sa2"
}
}
}
},
{
"text":"e2",
"children":
{
"2":
{
"text":"e2_site2",
"children":
{
"2":"e2_site2_salarie2_nom"
}
}
}
}
]
但它距离我的理想结果还有很长的路要走。
有人知道怎么做吗?
【问题讨论】:
-
某事告诉我这不是要走的路...
-
我不明白,什么意思?还有其他方法吗?