我想要生成JSON数据的树视图。因此,最好将JSON数据解析为多级(!)无序的HTML列表。我发现了一些插件,但我无法让它们处理我的JSON数据。
很好的解决方案是调用函数并将json数据作为参数传递。结果可能是一个多层次的无序列表。我假设函数必须遍历所有JSON数据,并编写、ul、和li标记。
有直截了当的方法吗?
蒂娅!
PS:示例树(使用我的JSOn数据):http://braincast.nl/samples/jsoneditor/ http://www.thomasfrank.se/downloadableJS/JSONeditor_example.html
发布于 2011-07-14 13:18:57
下面是一个简单的简单例子:
function tree(data) {
if (typeof(data) == 'object') {
document.write('<ul>');
for (var i in data) {
document.write('<li>' + i);
tree(data[i]);
}
document.write('</ul>');
} else {
document.write(' => ' + data);
}
}jQuery版本:
function tree(data) {
if (typeof(data) == 'object') {
var ul = $('<ul>');
for (var i in data) {
ul.append($('<li>').text(i).append(tree(data[i])));
}
return ul;
} else {
var textNode = document.createTextNode(' => ' + data);
return textNode;
}
}
$(document.body).append(tree(data));发布于 2013-11-22 01:02:11
这里是一个完整的纯javascript解决方案。递归遍历JSON对象,并在执行过程中构造ul和li。不过,最好不要一次只向DOM添加元素。
HTML
<ul id="JSONunorderedList"></ul> JAVASCRIPT
var jsonObj ={"labels":[ {"labelFont":"35pt Calibri","labelLocation":{"x":0.1483, "y":0.75}, "labelText":"fluffer"},{"labelFont":"35pt Calibri","labelLocation":{"x":0.666, "y":0.666}, "labelText":"nutter"}]}; //some json to display
var listEl =document.getElementById('JSONunorderedList');
makeList(jsonObj,listEl);
function makeList( jsonObject, listElement){
for(var i in jsonObject){//iterate through the array or object
//insert the next child into the list as a <li>
var newLI = document.createElement('li');
if (jsonObject[i] instanceof Array){
newLI.innerHTML=i+": ARRAY";
newLI.className="arrayOrObject"; //add a class tag so we can style differently
}
else if ( jsonObject[i] instanceof Object){
newLI.innerHTML=i+": OBJECT";
newLI.className="arrayOrObject"; //add a class tag so we can style differently
}
else
newLI.innerHTML=i+': '+jsonObject[i];
listElement.appendChild(newLI);
//insert a <ul> for nested nodes
if (jsonObject[i] instanceof Array || jsonObject[i] instanceof Object){
var newUL = document.createElement('ul');
//newUL.innerHTML=i;
listElement.appendChild(newUL);
makeList(jsonObject[i],newUL);
}
}
}发布于 2011-07-14 11:40:50
你试过使用PHP和json_decode();吗?
http://php.net/manual/en/function.json-decode.php
这将在PHP中将JSON字符串作为数组返回,然后可以遍历该数组来创建UL > LI列表。
只是个主意..。
https://stackoverflow.com/questions/6692538
复制相似问题