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 相关文章推荐
jquery 简单图片导航插件jquery.imgNav.js
Mar 17 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
jQuery中:radio选择器用法实例
Jan 03 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
JavaScript与java语言有什么不同
Sep 22 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
vue实现循环切换动画
Oct 17 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 Javascript
js中实现继承的五种方法
Jan 25 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
php绘制一个扇形的方法
2015/01/24 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
如何写你的创业计划书
2014/01/07 职场文书
村捐赠仪式答谢词
2014/01/21 职场文书
社区母亲节活动记录
2014/03/06 职场文书
《桥》教学反思
2014/04/09 职场文书
安全演讲稿大全
2014/05/09 职场文书
总经理检讨书
2014/09/15 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
爱国影片观后感
2015/06/18 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL