我一直在尝试将嵌套的JSON对象转换为jquery ACCORDION工作的格式。我经历了很多链接,但找不到正确的解决方案。这是我的JSON的样子:
{
"A": {
"id": "0",
"B": {
"id": "1"
},
"C": {
"id": "2"
},
"D": {
"id": "3"
}
}
}
注意:可以进一步嵌套“ B”或“ C”或“ D”,从而导致嵌套的手风琴格式。
我尝试了许多方法,但是结果不是我期望的。谁能帮帮我。
这是我无法使用的方法之一:
function MakeAccordion(obj) {
var json = '<div class="accordion">';
for (var key in obj) {
if (typeof obj[key] == "object")
json = json + MakeAccordion(obj[key]);
if (typeof obj[key] != "object")
json = "<h3>" + json + " = " + obj[key] + "</h3>";
else
json = json + "</h3>";
}
return json + "</div>";
}
预期输出:
<div class="accordion">
<h3>A</h3>
<div class="accordion">
<h3>B</h3>
<div>id = 0</div>
<h3>C</h3>
<div>id = 1</div>
<h3>D</h3>
<div>id = 2</div>
</div>
</div>
我的输出:
<div class="accordion">
<div class="accordion">
<h3>= 0</h3>
</div>
<div class="accordion">
<h3>= 1</h3>
</div>
</div>
<div class="accordion">
<h3>= 2</h3>
</div>
<div class="accordion">
<h3>= 3</h3>
</div>
答案 0 :(得分:2)
在标记jquery
的同时,您可以使用$.each()
..类似的东西
var Json = {
"A": {
"id": "0",
"B": {
"id": "1",
"K" : {
"id" : "5"
}
},
"C": {
"id": "2"
},
"D": {
"id": "3"
}
}
};
// run a function
MakeAccordion(Json);
// MakeAccordion function
function MakeAccordion(obj) {
var HTML = '<div class="accordion">'
HTML += MainAccordion(obj);
HTML += '</div>';
$('body').append(HTML);
}
// MainAccordion function
function MainAccordion(Main){
var HTML = '';
$.each(Main , function(key1 , value1){
console.log(ObjLength(value1));
HTML += '<h3>'+ key1 +'</h3>';
HTML += '<div class="accordion">';
HTML += LastAccordion(value1);
HTML += '</div>';
});
return HTML;
}
//LastAccordion function
function LastAccordion(nested){
var HTML = '';
$.each(nested , function(key2 , value2){
console.log(ObjLength(value2));
if(key2 !== 'id'){
HTML += '<h3>'+ key2 +'</h3>';
HTML += '<div>id = '+ value2['id'] +'</div>';
}
});
return HTML;
}
function ObjLength(obj) {
return Object.keys(obj).length;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
答案 1 :(得分:0)
var obj={
"A": {
"id": "0",
"B": {
"id": "1"
},
"C": {
"id": "2"
},
"D": {
"id": "3"
}
},
"B": {
"id": "0",
"B": {
"id": "1"
},
"C": {
"id": "2"
},
"D": {
"id": "3"
}
}
};
function MakeAccordion(obj) {
var htmlcode= '<div class="accordion">';
for (var key in obj) {
if (typeof obj[key] == "object")
var subcode=obj[key];
htmlcode=htmlcode+"<h3>"+key+"</h3>"+"<div class='accordion'>";
for(var key in subcode){
if(key!== 'id'){
htmlcode=htmlcode +"<h3>"+key+"</h3>"+"<div>id="+subcode[key].id+"</div>";
}
}
htmlcode=htmlcode+"</div>";
}
return htmlcode;
};
var a=MakeAccordion(obj);
console.log(a);