JSON是一種輕量級的數據交換格式,常用于網絡傳輸和存儲。然而,有時候JSON數據可能非常復雜,需要一個折疊展開的功能來方便查看和處理。
折疊展開的實現方式有很多,可以使用原生JavaScript,也可以使用第三方的插件。下面是一個使用原生JavaScript實現的示例:
// HTML代碼 <div id="json-container"></div> // JavaScript代碼 var json = { "name": "John", "age": 30, "hobbies": [ "reading", "cooking", "photography" ], "address": { "street": "123 Main St", "city": "Anytown", "state": "CA" } }; function buildJSON(container, data) { var html = ""; // 遍歷JSON數據 for (var key in data) { // 如果是對象或數組,則需要遞歸構建 if (typeof data[key] === "object") { html += "<p class='expandable' onclick='toggleExpand(this)'>" + key + "</p>"; html += "<div class='js-object hidden'>"; html += buildJSON(container, data[key]); // 遞歸構建 html += "</div>"; } // 如果是基本類型,則直接顯示 else { html += "<p>" + key + ": " + data[key] + "</p>"; } } container.innerHTML = html; } function toggleExpand(element) { var target = element.nextElementSibling; if (target.classList.contains("hidden")) { target.classList.remove("hidden"); element.innerHTML = element.innerHTML.replace("+", "-"); } else { target.classList.add("hidden"); element.innerHTML = element.innerHTML.replace("-", "+"); } } buildJSON(document.getElementById("json-container"), json);
上面的代碼會將JSON數據構建成一個可折疊展開的結構,可以通過點擊鍵值對的名稱來展開和收起,如下圖所示:
需要注意的是,上面的代碼只適用于JSON對象和JSON數組,如果需要支持其他類型的JSON數據,需要進行相應的調整。
上一篇json折疊和對比