json的定义、标准格式及json字符串检验


Posted in Javascript onMay 11, 2014

现在越来越多的项目和开发插件等默认都会支持和使用json数据格式,作为数据保持、传输的一种方式。
说是其中一种,就标示还有好多其他格式。比如:最多是xml。webservice的标准数据格式。
不过由于json是JavaScript 对象表示法(JavaScript Object Notation),天生就对js支持很好,
所以现在很多的ajax等都使用json,反而会更好处理一些。

1、定义

什么是 JSON ?
1.JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
2.JSON 是轻量级的文本数据交换格式
3.JSON 独立于语言 *
4.JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
w3c的标准说明如下:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

1.“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

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

json的定义、标准格式及json字符串检验

注意:如果后台直接传递对象来js,则是json格式的。参考文章:

[Jquery+asp.net 后台数据传到前台js进行解析的办法说明]
[jquery ajax传递对象(数组)到后台并解析的实现]

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

json的定义、标准格式及json字符串检验

注意:传递数据这个就好理解。其实就一个array。array和json直接的关系,请参考文章:

[javascript对象及数组 json的一些了解说明]

2、json标准:

json表示:我没有标准。哈哈。我说的标准是指什么样的格式化的字符串js才能解析成json?

下面这个json串就是正确的:

{
    "employees": [
        {
            "firstName": "Bill",
            "lastName": "Gates"
        },
        {
            "firstName": "George",
            "lastName": "Bush"
        },
        {
            "firstName": "Thomas",
            "lastName": "Carter"
        }
    ]
}

注意:

json串,在js中会解析成对象。其中对象的名称比如:
employees、firstName,必须用""或者''引起来才行。后面的value,如果是int和bool(js是不区分的哦),可以不用""或者''引起来,其他的字符串必须引起来,尤其是记得把时间日期引起来!

总结如下:

里面的是一个对象,如果是多个对象,则用逗号间隔,即{},{},这样就组成了一个对象序列,为了辨别开始和结束,则需要加上[]才能进行传递,则实际传递的形式应该是[{},{}],如果只要传递一个对象,则{}的形式就可以了。接下来就是对象属性的表现方式了,属性必须在""
里面,属性与值之间用:隔开,属性之间用,来分隔,如果属性的值为数组,则用[]包括起来,这样实际传递的数据格式可能有:1、{"属性1":值1,"属性2":值2},如果值为字符串,则也需要用""括起来(下同)。2、{"属性1":值1,"属性2":[值1,值2]},其中属性2是一个数组,包含
了值1和值2。3、{"属性1":值1,"属性2":{"属性a":值a,"属性b":[值b,值c]}},这个比较复杂了,属性2是个对象,这个对象由包含属性a和属性b,属性b又是一个数组包含值b和值c。我想这些应该是最基本了,其余的就是在此基础上的拓展而已。

实际中,要序列化对象,在.net中只要调用Newtonsoft.Json.JavaConvert.SerializeObject();函数即可

参考:

jquery ajax传递对象(数组)到后台并解析的实现 

https://3water.com/article/40131.htm

3、json有这么多要求(其实不多了),我们怎么判断其正确性?

有办法,就是你打印出来字符串,自己的按照上面的结构对应一下,或者直接使用在线检验工具检验。

参考:http://www.kjson.com/
http://tool.oschina.net/codeformat/json

Javascript 相关文章推荐
ajax 文件上传应用简单实现
Mar 03 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
Sep 11 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
简单理解js的prototype属性及使用
Dec 07 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
详解webpack进阶之loader篇
Aug 23 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
Jquery操作js数组及对象示例代码
May 11 #Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 #Javascript
如何防止回车(enter)键提交表单
May 11 #Javascript
js取整数、取余数的方法
May 11 #Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
May 11 #Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
May 11 #Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 #Javascript
You might like
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python 实现插入排序算法
2012/06/05 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
《老山界》教学反思
2014/04/08 职场文书
岗位明星事迹材料
2014/05/18 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
公司离职证明标准范本
2014/10/05 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB