JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 易于人阅读和编写,同时也易于机器解析和生成。 XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。

一.json结构及形式

结构1:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

对应的形式为:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

结构2:

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

对应的形式为:

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

[{key1:value1,key2:value2},{key3:value3,key4:value4}
]

二.json字符串转化为json对象

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。
对应的形式:

var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";

字符串json转化json对象有三种方式:

1.通过eval( ) 方法将字符串直接转化为JSON对象 并获得元素的值。
<script type="text/javascript">window.onload = function(){var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";//使用eval()将字符串转换为对象var json_obj = eval("("+ json_text +")");//访问 book-namedocument.write(json_obj.book.name);//访问 book-author-Xudocument.write(json_obj.book.author[1]);} </script>

注意:"()"运算符

2.new Function形式
<script type="text/javascript">window.onload = function(){var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";//用new Function将字符串转换为对象var json_obj = (new Function("return" + json_text))();//访问 book-namedocument.write(json_obj.book.name);//访问 book-author-Xudocument.write(json_obj.book.author[1]);}</script>
3.使用全局的JSON对象
<script type="text/javascript">window.onload = function(){var json_text = '{"book":"js"}';//用全局JSON将字符串json转换为json对象var json_obj = JSON.parse(json_text);//访问 book-namedocument.write(json_obj.book);//访问 book-author-Xu//document.write(json_obj.book.author[1]);}</script>

目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。注意:’{“book”:“js”}’; 里面的属性需要用双引号引起来,才能解析,否则会失败。

三.json校验格式化工具简单实现

做了一个比较简单的json格式化工具,效果如下:

代码分析:

<body><textarea id="content_value"></textarea><input type="button" value="格式化" onclick="check()"><textarea id="output_value"></textarea>
</body>
<script type="text/javascript">
function check(){var text_value = document.getElementById('content_value').value;if(text_value == ""){  alert("不能为空");return false;} else {var res="";for(var i=0,j=0,k=0,ii,ele;i<text_value.length;i++){//k:缩进,j:""个数ele=text_value.charAt(i);if(j%2==0&&ele=="}"){k--;for(ii=0;ii<k;ii++) ele="    "+ele;ele="\n"+ele;}else if(j%2==0&&ele=="{"){ele+="\n";k++;debugger;for(ii=0;ii<k;ii++) ele+="    ";}else if(j%2==0&&ele==","){ele+="\n";for(ii=0;ii<k;ii++) ele+="    ";}else if(ele=="\"") j++;res+=ele;}document.getElementById('output_value').value = res;}
}
</script>

js实现json格式化,以及json校验工具的简单实现相关推荐

  1. idea之json格式化插件Json Parser

    idea之json格式化插件Json Parser 安装插件 安装后重启idea 使用插件 Json Parser 为啥要用Json Parser,别问你也可以不用,废话不说,自己品! 安装插件 安装 ...

  2. c语言中json格式化输出,JSON格式化输出

    JSON格式化输出 今天有个需求是对输出的JSON进行格式化 首先想到的就是jsBeautifier之类的小插件 搜索了一番看到有一位朋友回答JSON.stringify可以输出格式化的JSON字符串 ...

  3. java导出json格式化的json文件及xml文件

    场景 点击ztree树的节点,导出该节点下的所有子节点数据(要求:导出过程不跳转页面) 前端: <div id="rolesGroupmenu" class="ea ...

  4. JSON美化工具、JSON格式化、JSON解析方法

    如何直观地查看json格式,推荐一个非常好用的在线工具: 美罗在线工具 http://meiluoli.com 我们可以直观地看到,杂乱无章的json代码变成了有序直观的视图.

  5. android studio json格式化,Android json格式化显示,可展开与折叠

    Android JSON viewer, to convert JSON Strings to a Friendly Readable Format, it supports expend&c ...

  6. 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码

    为你工具 ToForU-在线json格式化|在线json压缩|在线json转义|工具大全 提供 json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json ...

  7. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国

    我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非常有用.-- Ostechnix J ...

  8. 实现JSON在线美化(格式化)、JSON转CSV、CSV转XML工具-toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  9. linux服务器返回json,Linux 命令行工具解析和格式化输出 JSON的方法

    JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otat ...

最新文章

  1. CTO点名要搞个灰度发布系统,不慌!
  2. 使用mac 终端利用alias设置快捷命令
  3. 微软正式推免费Word 电脑商Office收费降60%
  4. mac系统做云服务器,mac系统的云服务器
  5. React是什么及特点
  6. 第三次学JAVA再学不好就吃翔(part100)--文件名称过滤器
  7. MariaDB mysql 比较区别 选择
  8. 《大型数据库技术》MySQL管理维护
  9. java中treemap_Java TreeMap – Java中的TreeMap
  10. QOS端口限速EMAIL流量限速
  11. Python爬虫之网易云音乐数据爬取(十五)
  12. 制作poster+香港打印流程
  13. 码绘VS手绘(二)动态绘图
  14. Python全栈(三)数据库优化之10.MySQL高级-表优化和索引优化
  15. iOS Charles捉取正式环境上的数据
  16. 综艺视频素材在哪下?怎么下载综艺高清视频?
  17. 问题 C: 旅行者的背包
  18. HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。...
  19. GG-CNN代码学习
  20. k8s集群环境namespace共享和隔离

热门文章

  1. 一招教你不用任何软件就能知道谁动过你的电脑并做了哪些详细的操作,比查看Recent文件访问记录更厉害的方法开机自动运行PSR录制截取电脑操作
  2. MySQL联合创始人向Sun递交辞呈
  3. 学术规范与论文写作(期末考试答案)(方便检索版)
  4. 学计算机高中应选什么科目,学计算机高中需要选哪三科?高中自选三科怎么上课?...
  5. 如何同步修改git项目名称和本地项目名称
  6. HTML5期末大作业:动物主题网站设计——酷酷动物主题响应式网页(5页) 大学生动物主题网页作品 动物网页设计作业模板 学生网页制作源代码下载
  7. 友华光猫超级密码获取——PT622PT632
  8. 八个数码管共阴c语言,LT-51S(STC89C52R):8个共阴极数码管-程序(2)
  9. raised exception class EAccexxViolation with ‘Access violation at address 45EFD5 in module 出错
  10. 读入一张图片,并且转化成灰度值