原生js格式化json工具
json格式化小工具,原生js编写,直接上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>原生js格式化json的方法</title>
<script>
//格式化代码函数,已经用原生方式写好了不需要改动,直接引用就好
var formatJson = function (json) {
var formatted = '', //转换后的json字符串
padIdx = 0, //换行后是否增减PADDING的标识
PADDING = ' '; //4个空格符
/**
* 将对象转化为string
*/
if (typeof json !== 'string') {
json = JSON.stringify(json);
}
/**
*利用正则类似将{'name':'ccy','age':18,'info':['address':'wuhan','interest':'playCards']}
*---> \r\n{\r\n'name':'ccy',\r\n'age':18,\r\n
*'info':\r\n[\r\n'address':'wuhan',\r\n'interest':'playCards'\r\n]\r\n}\r\n
*/
json = json.replace(/([\{\}])/g, '\r\n$1\r\n')
.replace(/([\[\]])/g, '\r\n$1\r\n')
.replace(/(\,)/g, '$1\r\n')
.replace(/(\r\n\r\n)/g, '\r\n')
.replace(/\r\n\,/g, ',');
/**
* 根据split生成数据进行遍历,一行行判断是否增减PADDING
*/
(json.split('\r\n')).forEach(function (node, index) {
var indent = 0,
padding = '';
if (node.match(/\{$/) || node.match(/\[$/)) indent = 1;
else if (node.match(/\}/) || node.match(/\]/)) padIdx = padIdx !== 0 ? --padIdx : padIdx;
else indent = 0;
for (var i = 0; i < padIdx; i++) padding += PADDING;
formatted += padding + node + '\r\n';
padIdx += indent;
console.log('index:'+index+',indent:'+indent+',padIdx:'+padIdx+',node-->'+node);
});
return formatted;
};
//引用示例部分
//var originalJson = {'name':'ccy','age':18,'info':[{'address':'wuhan'},{'interest':'playCards'}]};
var showJson = function(){
var originalJson = document.getElementById('inputJson').value;
console.log(originalJson);
//(2)调用formatJson函数,将json格式进行格式化
var resultJson = formatJson(originalJson);
document.getElementById('out').innerHTML = resultJson;
}
</script>
</head>
<body>
<span style="position:absolute;left:0px;top:20px;font-size: 20px;font-family: '微软雅黑';color: #2F4F4F;">输入json</span>
<textarea style="position:absolute;left:0px;top:80px;width:40%;height:80%;" cols="50" rows="20" id="inputJson"></textarea>
<span style="position:absolute;left:55%;top:20px;font-size: 20px;font-family: '微软雅黑';color: #2F4F4F;">查看结果</span>
<textarea style="position:absolute;left:55%;top:80px;width:40%;height:80%;display: " id="out"></textarea>
<div style="position:absolute;left:45%;top:12%;width:6%;height:4%;">
<input type="button" value="提交" onclick="showJson();">
</div>
</body>
</html>
原生js格式化json工具的更多相关文章
- 原生js格式化json的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 原生js格式化json和格式化xml的方法
在工作中一直看各位前辈的博客解决各种问题,对我的帮助很大,非常感谢! 之前一直比较忙没有写博客,终于过年有了点空闲时间,可以把自己积累的东西分享下,笔记中的部分函数不是自己写的,都是工作中一点点积累的 ...
- 初探原生js根据json数据动态创建table
初探原生js根据json数据动态创建table 小生以实习生的职位进入了一家非纯软件的公司做asp.net开发,大半个月下来发现公司里居然没有前端工程师,这令我很诧异,跟着公司做项目,发现前端后台没有 ...
- js格式化JSON数据
前言: 最近做的项目中遇到个需要在前端页面中将某个设备需要的数据格式展示出来,方便用户配置.一开始单纯的将数据格式写入到pre标签中, 但是通过pre标签写入的数据格式在代码可视化上不是很优雅.由于上 ...
- js 格式化 json 字符串
1.JSON.stringify的三个参数 var json = {"@odata.context":"$metadata#AddTableOne_466281s&quo ...
- js格式化json字符串和json对象
1,格式化json对象 var json = {"@odata.context":"$metadata#AddTableOne_466281s","v ...
- 原生JS:JSON对象详解
JSON对象 支持到IE8,旧版的IE需要Polyfill 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web ...
- js格式化日期工具类
就是一个工具类 开箱即用 传进一个指定的参数,格式化 //将时间戳格式化 function getMyDate(time){ if(typeof(time)=="undefined&quo ...
- JS格式化JSON后的日期
序列化后日期变成了 /Date(1494524134000+0800)\ 这种格式 不能正常显示了 但也不能为了这个吧所有服务的DateTime字段都改成String类型 于是找了一个JS的扩展方法来 ...
随机推荐
- android 可以在程序代码中设置样式:style
<style name="text_style"> <item name="android:textStyle">bold</it ...
- Mysql知识点个人整理
1.概念 数据库:保存有组织的数据的容器. 表: 某种特定类型数据的结构化清单 模式:关于数据库和表的布局和特性的信息?(有时指数据库) 主键: primary key 一个列或一组列,其值能唯一区分 ...
- javaScrpit 开端
JavaScript 代码可以直接嵌在网页的任何地方,不过我们通常把JavaScrpit放到<head>中: <html> <head> <script> ...
- 团队-爬取豆瓣电影TOP250-开发环境搭建过程
从官网下载安装包(http://www.python.org). 安装Python 选择安装路径(我选的默认) 安装Pycharm 1.从官网下载安装包(https://www.jetbrains.c ...
- 解决刚刚安装完mysql 远程连接不上问题
解决远程连接mysql错误1130 远程连接Mysql服务器的数据库,错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to con ...
- InstallShield 创建 visual studio 工程的时候 指向 任意 visual studio 版本 方法 (修改 计算机 默认 visual studio shell 版本)
这需要 修改 计算机 默认 visual studio shell 版本 注册表 HKEY_CLASSES_ROOT VisualStudio.DTE 配置节点 描述的是 默认的 visual stu ...
- php安装扩展的几种方法
转自:http://doc3.workerman.net/appendices/install-extension.html 安装扩展 注意 与Apache+PHP或者Nginx+PHP的运行模式不同 ...
- shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Java Web(三) 会话机制,Cookie和Session详解(转载)
https://www.cnblogs.com/whgk/p/6422391.html 很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因 ...