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

现在越来越多的项目和开发插件等默认都会支持和使用json数据格式,作为数据保持、传输的一种方式。

说是其中一种,就标示还有好多其他格式。比如:最多是xml。webservice的标准数据格式。

不过由于json是JavaScript 对象表示法(JavaScript Object Notation),天生就对js支持很好,

所以现在很多的ajax等都使用json,反而会更好处理一些。

今天分享和总结一些json的基本定义、格式、字符串的格式,以及在做测试的时候使用json时做一些简单的校验。

1、定义

什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言 *

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建构于两种结构:

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

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

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

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

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

[Jquery+asp.net 后台数据传到前台js进行解析的办法说明]

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

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

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

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

2、json标准:

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{

"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传递对象(数组)到后台并解析的实现

http://www.suchso.com/UIweb/jquery-ajax-post-array-csharp-json.html

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

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

参考:http://www.kjson.com/

http://tool.oschina.net/codeformat/json

转发注明:http://www.suchso.com

现在越来越多的项目和开发插件等默认都会支持和使用json数据格式,作为数据保持、传输的一种方式。

说是其中一种,就标示还有好多其他格式。比如:最多是xml。webservice的标准数据格式。

不过由于json是JavaScript 对象表示法(JavaScript Object Notation),天生就对js支持很好,

所以现在很多的ajax等都使用json,反而会更好处理一些。

今天分享和总结一些json的基本定义、格式、字符串的格式,以及在做测试的时候使用json时做一些简单的校验。

1、定义

什么是 JSON ?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSON 独立于语言 *

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建构于两种结构:

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

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

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

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

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

[Jquery+asp.net 后台数据传到前台js进行解析的办法说明]

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

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

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

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

2、json标准:

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{

"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传递对象(数组)到后台并解析的实现

http://www.suchso.com/UIweb/jquery-ajax-post-array-csharp-json.html

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

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

参考:http://www.kjson.com/

http://tool.oschina.net/codeformat/json

转发注明:http://www.suchso.com


相关文章

  • ONENET 中移物联网平台 TCP透传功能初探
  • 文章转自官方论坛 近期OneNET上线了TCP透传功能,该功能旨在尽量弱化终端测软件为了适配协议而做的修改,将协议的解析功能放在了平台测,为的是更加方便用户的终端(特别是DTU)的接入.下面我们将以网络助手为例,做一个简单的接入示例,该示例 ...查看


  • 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
  • 微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 1)运营主体为组织,可选择成为服务号或者订阅号: 2)服务号可以申请自定义菜单: 3)使用QQ登录的公众号,可以升级为邮箱登 ...查看


  • 基于Android平台的新闻客户端的设计与实现
  • 实习项目四. 基于Android 平台的新闻客户端的 设计与实现 专 业: 学 号: 姓 名:ls 辅导老师: 2015年7月7日 目 录 第1章 诸论 ........................................... ...查看


  • 推特是怎样炼成的?
  • 2013/12/03 | i天下网商 [i天下网商注]推特的革命性不仅在于创造了140个字符的信息交流方式,更重要的这些推文所包含的时间.地点等数据兼具商业和历史的价值.推特的崛起给我们的启示是,用户所感知的信息交换只是冰山一角,底层的数据 ...查看


  • 第三方系统资源元数据信息同步协议
  • 国家教育资源智能导航系统 第三方系统资源信息接入协议 科大讯飞信息科技股份有限公司 2014年05月 版本记录 1. 文档目的 教育资源集中展示系统搜索和导航需要第三方教育资源系统的资源元数据,例如国家教育资源公共服务平台.安徽教育云平台. ...查看


  • 京东API接入流程文档 -商家版
  • JOS 接入流程文档(商家专用) 一. 应用申请流程 1. 注册成为开发者 请访问: 沙箱环境地址 :dev.sandbox.360buy.com 正式环境地址: jos.360buy.com (1) 访问开发者中心,点击"申请成 ...查看


  • Web前端常见题目及答案
  • HTML 1.Doctype 作用? 严格模式与混杂模式如何区分?它们有何意义? ∙ 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析 器, 用什么文档类型 规范来解析这个文档. ∙ ∙ 严格模式的排版和 JS 运作模式是以该浏览器 ...查看


  • iOS常见面试题总结
  • 1.objective-c常见面试题: 1.OC 语言的基本特点 OC 语言是 C 语言的一个超集,只是在 C 的基础之上加上了面向对象(oop) 的特性; OC 与 Java 语言相同都是单继承,这一点与 C++语言不同(多重继承); O ...查看


  • js权威指南 读书笔记
  • 第一章 词法结构 Js 是用Unicode 字符集编写的:js 区分大小写,而html 不区分:直接量:标志符合保留字:分号可选,注意良好的编程习惯. 第二章 类型.值和变量 1. 数字 Js 不区分整数值和浮点数值,所有值都用浮点数值表示 ...查看


热门内容