json数据格式及json校验格式化工具简单实现
2016-08-23 14:49
671 查看
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 易于人阅读和编写,同时也易于机器解析和生成。 XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
对应的形式为:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
结构2:
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
对应的形式为:
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
对应的形式:
字符串json转化json对象有三种方式:
1.通过eval( ) 方法将字符串直接转化为JSON对象 并获得元素的值。
注意:"()"运算符
2.new Function形式
3.使用全局的JSON对象
目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。注意:'{"book":"js"}'; 里面的属性需要用双引号引起来,才能解析,否则会失败。
初始数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/01/f9bf85ffce765fd931eaa00c90959d1d.png)
json格式化后的数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/01/b8d3b042d5fed24487603b91c3c01440.png)
代码分析:
参考资料:
http://www.json.org/json-zh.html http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html http://www.cnblogs.com/SkySoot/archive/2012/04/17/2453010.html http://www.cnblogs.com/xugang/archive/2010/09/10/1823422.html http://www.cnblogs.com/snandy/archive/2011/03/13/1981611.html http://www.cnblogs.com/know/archive/2011/03/13/1982839.html
一.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-name document.write(json_obj.book.name); //访问 book-author-Xu document.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-name document.write(json_obj.book.name); //访问 book-author-Xu document.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-name document.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格式化工具,效果如下:初始数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/01/f9bf85ffce765fd931eaa00c90959d1d.png)
json格式化后的数据:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/01/b8d3b042d5fed24487603b91c3c01440.png)
代码分析:
<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>
参考资料:
http://www.json.org/json-zh.html http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html http://www.cnblogs.com/SkySoot/archive/2012/04/17/2453010.html http://www.cnblogs.com/xugang/archive/2010/09/10/1823422.html http://www.cnblogs.com/snandy/archive/2011/03/13/1981611.html http://www.cnblogs.com/know/archive/2011/03/13/1982839.html
相关文章推荐
- Nodejs实现简单爬虫,将爬到的数据以json数据格式保存到MySQL数据库中
- 基于json数据格式实现的简单数据库——jsonDB
- python中json格式数据输出的简单实现方法
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- json数据的格式化的校验工具
- j2ee编程实现将数据变成json格式的高效转换工具fastJson
- php学习笔记(三十)ajax请求和接收参数的实现方式(包括json数据格式的简单处理)
- JSON(一种轻量级的数据交换格式)格式化工具
- python中json格式数据输出的简单实现方法
- Json-lib, 实现Java对象与JSON数据格式的互转
- jsonp 跨域查询数据返回json,超简单实现
- HTML,javascript,Json数据在线格式化工具
- java生成json格式数据,一个简单的class
- android中json数据格式实现http请求
- json,xml数据格式校验
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理
- 推荐一个在线json校验、格式化工具编辑
- Json-lib, 实现Java对象与JSON数据格式的互转
- php操作JSON格式数据的实现代码
- php操作JSON格式数据的实现代码