JSON数据格式介绍
前言:本文主要内容是来自json官网中文翻译:http://www.json.org/json-zh.html。只是在后面加入了自己对于json数据格式的理解,其实官网里面介绍的很清楚,只是我们没有深入理解json格式。等我们发现自己对于json理解有偏差时,再过来看官网,发现官网上其实写的很清楚,只是我们没有注意而已。本文就是记录官网上记录的内容,但是看官很可能在第一眼浏览时可能会忽略的内容,让大家少走一些弯路。
JSON(JavaScript Object Notation)是一种轻量级(LightWeight)的数据交换工具;易于编写和阅读,同时也易于机器解析和生成;是基于JavaScript的一个子集。JSON采用完成独立于语言的文本语言,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等),这些优良的特性使得JSON成为理想的交换语言。
准确的说,上面这段话选自http://www.json.org/json-zh.html。根据不同的语言,对于这种键值(key/value)类型对集合,可以被理解为对象(Object)、记录(Record)、结构体(Struct)、字典(Dictionary)、哈希表(Hash Table)、有键列表(keyed List)、关联数组(Associative Array);另外值得有序列表(Ordered),被理解为数组(Array)。
JSON具有以下形式:
对象是一个无序的键/值对的集合,该对象以左括号{开始,以右括号}结束。每个键后跟冒号:,对每个键值对之间使用逗号,分割。注意,这些符号全部是英文符号。
看个json的常用实例:
{
"name": "刘德华",
"birth": "1961-09-27",
"wife": "朱丽倩",
"height": "174cm",
"weight": "63kg"
}
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
看个数组的json格式数据:
[
"http://www.baidu.com",
"http://www.taobao.com",
"http://www.sogou.com",
"http://www.tencent.com",
"http://www.alibaba.com"
]
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
既然可以嵌套,数组里面当然也可以是json数据了,这个像是递归定义了。
[
{
"name": "刘德华",
"birth": "1961-09-27",
"height": "174cm",
"weight": "63kg"
},
{
"name": "林志玲",
"birth": "1974-11-29",
"height": "174cm",
"weight": "52kg"
}
]
既然数组里面支持json格式,那么json数据里面可定也可以用数组了。
{
"ent": [
{
"name": "刘德华",
"birth": "1961-09-27",
"height": "174cm",
"weight": "63kg"
},
{
"name": "林志玲",
"birth": "1974-11-29",
"height": "174cm",
"weight": "52kg"
}
]
}
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
字符串的定义一定要注意编码问题
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
根据json的递归定义,前面定义的格式几乎是json数据的全部数据格式了,大家可以仔细看下上面提到的实例。
下面列下常用的Json解析包:
Java:
json-simple:这个是常用的Json解析包,目前项目中用的就是这个,好用。 代码见这里:http://code.google.com/p/json-simple/
fastjson:alibaba出品,看评测报告性能性能优异,暂时还没有使用。 代码可以参考:http://sourceforge.net/projects/fastjson/
google-gson:Google出品,还没有用过,不过google出的东西应该不会太差,用过的人可以说两句。http://code.google.com/p/google-gson/
XStream:没错,就是XStream。使用XStream序列化对象,但是还没有用过的XStream的JSon解析功能,写在这里纯粹是个眼熟。 http://xstream.codehaus.org/json-tutorial.html,看官方教程是JSON格式和Object的转换。
Python:
simplejson:这个在Python中比较好用,相关链接见这里:
http://pypi.python.org/pypi/simplejson/,如果感觉安装麻烦的话,可以把simplejson源码放到你的项目目录下,就可以直接使用。
JavaScript:
json2.js:在js中使用json,不过我在js中通过ajax请求,可以直接获得json格式,然后直接使用json数据,这个没有看细节,应该是ajax中本来就引用了json的解析方式,链接可以见这里:
https://github.com/douglascrockford/JSON-js
php:
php本身安装包提供了json_encode和json_decode函数,这两个函数比较好用,要注意的是字符编码问题,这个问题在网络上有一堆的答案,大家可以仔细看下。
Zend_JSON:zend_json提供了常用的json解析功能,另外还提供了一个好用的prettyPrint函数,这个对于调试还是比较有用的。两外还有xml和json格式的转换、json-server提供json格式的请求和响应,注意这个是Zend_Json_Server,提供RPC服务,细节可以见这里:http://framework.zend.com/manual/1.12/en/zend.json.html
json这种数据格式可是大大方便了程序员处理数据的简明性,记得在某篇文章中看到,json数据格式已经定义了所有需要的元素,在未来没有再扩展的必要。这句话就目前来看,确实很正确。深入理解一下json数据还是很有必要的。
分享到:
相关推荐
资源名称:JSON数据格式介绍 中文WORD版内容简介:本文档主要讲述的是JSON数据格式介绍;JSON是 Javascript Object Notation的简称,是一种轻量的数据表示方法。jason格式采用key:value的方式记录数据,非常...
JSON数据格式介绍.doc
VB利用官方api读写JSON数据格式文件简单实例,是一个非常、非常简单的例子…………
世界地图JSON数据格式
JSON 格式时,只需处理好特殊字符即可。另外,必须用 (“) 而非 (‘) 表示字符串: 代码如下: static String string2Json(String s) { StringBuilder sb = new StringBuilder(s.length()+20); sb.append(‘\”‘);
JSON数据格式检验,JSON数据类型检验,JSON数据检验,用于校验两个JSON字符串是否一样,包括数据格式一样,数据类型一样,数据值一样
要素合集创建要素图层的方式,需要用到json格式的要素,为了方便本地测试,我们可以把geojson和shp格式的要素转换为json格式。
json数据格式化(editplus 格式化 Json 工具 )
前端展示json数据,格式化,可折叠展开
Json 数据格式化 jackson
json
c语言json数据格式解析 c语言json数据格式解析 c语言json数据格式解析
json数据格式java解析jar包 提供了方便的解析json数据格式的工具
PB写的对JSON数据格式的控制,解决WEB上rest接口问题
json,json数据格式
//JSON 数据交换格式练习.第一个爬虫练习
JSON数据格式.ppt
json数据在Html页面,采用光标事件格式化展示,方便用户查看对比接口文档
Json数据格式协议C#解析方法,分别介绍使用c#函数解析Json报文的方法