假设我有一个任意嵌套的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中使用的密钥的概述,那么使用JSONAPI将变得更容易。
我将如何在PHP或nodejs中实现这一点?或者其他工具?如果文本值很长,那么它可以被截断为基于行的。
请注意,在大多数情况下,您应该简单地用所需的目标语言解析JSON。如果这不是一个选项,你可以很容易地迭代所有元素,比如:
<?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);