【发布时间】:2014-10-13 07:59:15
【问题描述】:
我有以下无序列表
<ul>
<li data-id="111" data-sub="0" data-url="home" data-active="1">Home</li>
<li data-id="222" data-sub="0" data-url="about" data-active="1">About</li>
<li data-id="333" data-sub="1" data-url="news" data-active="1">News
<ul>
<li data-id="444" data-sub="0" data-url="news/latest" data-active="1">Latest</li>
<li data-id="555" data-sub="0" data-url="news/reports" data-active="1">Reports</li>
</ul>
</li>
</ul>
我想获取数据属性,并以 JSON 格式输出,这样它就会以与下面相同的格式显示
[{
"active": 1,
"url": "home",
"sub": 0,
"id": 111
}, {
"active": 1,
"url": "about",
"sub": 0,
"id": 222
}, {
"active": 1,
"url": "news",
"sub": 1,
"id": 333,
"child": [{
"active": 1,
"url": "news/latest",
"sub": 0,
"id": 444
}, {
"active": 1,
"url": "news/reports",
"sub": 0,
"id": 555
}]
}]
目前我有以下 JS
<script>
var mynav = [];
$("li").each(function () {
if($(this).children("ul").length) {
$(this).data('child', '"' + $(this).data() + '"');
mynav.push($(this).data());
}
mynav.push($(this).data());
});
mynav = JSON.stringify(mynav);
console.log(mynav);
</script>
输出以下内容。
[{
"active": 1,
"url": "home",
"sub": 0,
"id": 111
}, {
"active": 1,
"url": "about",
"sub": 0,
"id": 222
}, {
"active": 1,
"url": "news",
"sub": 1,
"id": 333,
"child": "\"[object Object]\""
}, {
"active": 1,
"url": "news",
"sub": 1,
"id": 333,
"child": "\"[object Object]\""
}, {
"active": 1,
"url": "news/latest",
"sub": 0,
"id": 444
}, {
"active": 1,
"url": "news/reports",
"sub": 0,
"id": 555
}]
我的格式适用于简单的无序列表,因为当列表项具有其他总和项(例如我的示例)时,我无法将列表转换为正确的 JSON 格式。我需要对我的 JS 做些什么才能让它按照我想要的方式格式化子列表?
【问题讨论】:
-
您需要取一个子数组来推送子值并将该子数组推送到父数组。
标签: javascript jquery html json list