现在我有一个像这样的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"
}
]
}
]
}
你知道如何用正则表达式实现理想的输出吗?
任何想法或建议将不胜感激!提前致谢。 ;)
编辑:
输出根据soulmerge的推荐而改变。就像这样:
[
{
"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"
}
}
}
}
]
但是我的理想结果还有很长的路要走。
有谁知道怎么做?
答案 0 :(得分:6)
正则表达式是您可以在这里使用的最差方法:
我建议在$entreprise
数组上进行所有操作,不要冒任何风险,然后在其上调用json_encode()
。
生成的JSON具有对象而不是数组的原因是原始数组不是0索引的。试试这个,例如:
dump(json_encode(array_values($enterprise)));
答案 1 :(得分:1)
JSON不是常规语言,因此您无法使用正则表达式来解析它。并且您的预期输出不是有效的JSON,因为不能像
中那样多次出现相同的密钥{
"text":"e1_site2_sa1",
"text":"e1_site2_sa2"
}
答案 2 :(得分:0)
你应该找到从json_encode输出所需json输出的方法,而不是输出你不想要的东西,然后用正则表达式欺骗它们。 所以我的猜测是你的数据结构而不是文本输出......