前端实现json数据格式化展示

    xiaoxiao2022-07-14  154

    1. 故事前景:

    后端返回给前端一串json字符串,前端需要做格式化处理并将其美观地展示给用户。

    2. 效果演示:

    3. 实现代码:

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>json数据格式化</title> <style> /* 方法1:设置textarea合适的宽高 */ #jsonTextarea { float: left; margin-right: 20px; width: 40%; height: 70vh; outline: none; padding: 5px; } /* 方法2:自定义高亮样式 */ #jsonPre { float: left; width: 40%; height: 70vh; outline: 1px solid #ccc; padding: 5px; overflow: scroll; } .string { color: green; } .number { color: darkorange; } .boolean { color: blue; } .null { color: magenta; } .key { color: red; } </style> </head> <body> <textarea id="jsonTextarea" readonly></textarea> <pre id="jsonPre"></pre> </body> <script src="./jquery-3.4.1.min.js"></script> <script> var data = '[{"name":"黑子","sex":"男","Age":25,"hobby":["篮球","跑步","看电影","王者荣耀"],"normal":true},{"name":"张三","sex":"男","Age":25,"hobby":["上天","入地"],"normal":false}]'; // 方法1:textarea + JSON.stringify function parse1(str) { return JSON.stringify(JSON.parse(str), null, "\t"); } $('#jsonTextarea').text(parse1(data)); // 方法2:pre + JSON.stringify function parse2(str) { // 设置缩进为2个空格 str = JSON.stringify(JSON.parse(str), null, 2); str = str .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>'); return str.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { var cls = 'number'; if (/^"/.test(match)) { if (/:$/.test(match)) { cls = 'key'; } else { cls = 'string'; } } else if (/true|false/.test(match)) { cls = 'boolean'; } else if (/null/.test(match)) { cls = 'null'; } return '<span class="' + cls + '">' + match + '</span>'; }); } $('#jsonPre').html(parse2(data)); </script> </html>

    注:以上代码为方便dom操作,引入了jquery,请自行引入jquery即可直接演示。

     

    4. 参考资料:

    JSON.stringify() - JavaScript | MDN

    在html页面中展示JSON

     

     

    最新回复(0)