假设我有一个任意嵌套的JSON文件:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
我想输出结构:
foo.menu.id=file
foo.menu.value=File
foo.menu.popup.menuitem[0].value=New
foo.menu.popup.menuitem[0].onclick=CreateNewDoc()
foo.menu.popup.menuitem[1].value=Open
等等。我的用例是,如果我可以概述我可能想要在我的mashup中使用的密钥,那么使用JSON API会更容易。
我如何在PHP或nodejs中实现这一目标?还是其他一些工具?如果文本值很长,则可以将其截断为基于行的。
答案 0 :(得分:0)
请注意,在大多数情况下,您只需使用所需的目标语言解析JSON即可。如果这不是一个选项,您可以轻松地遍历所有元素,like this:
<?php
function unroll_obj($o, $prefix='') {
foreach ($o as $k => $v) {
if (is_array($v)) {
unroll_obj($v, $prefix . $k . '.');
} else {
echo $prefix . $k . '=' . $v . "\n";
}
}
}
$s = '{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}';
$o = json_decode($s, true);
unroll_obj($o);