JSON基础知识
2018-02-08 11:40 Evan 阅读(49) 评论(0) 收藏 举报![]() |
介绍 JSON |
- object
- {}
{ members } - members
- pair
pair , members - pair
- string : value
- array
- []
[ elements ] - elements
- value
value , elements - value
- string
number
object
array
true
false
null
- string
- ""
" chars " - chars
- char
char chars - char
- any-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits - number
- int
int frac
int exp
int frac exp - int
- digit
digit1-9 digits
- digit
- digit1-9 digits - frac
- . digits
- exp
- e digits
- digits
- digit
digit digits - e
- e
e+
e-
E
E+
E-
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具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
空白可以加入到任何符号之间。 以下描述了完整的语言。
- ActionScript:
- C
.
- json-c.
- JSON_checker.
- C++:
- C#:
- Cold Fusion:
- D.
- Delphi:
- Erlang.
- Haskell:
- Java:
- JavaScript.
- Lisp:
- LotusScript.
- Lua.
Why JSON isn't just for JavaScript • I can't believe it's not XML! • The JSON vs XML debate begins in earnest • JSON and XML • Why JSON vs XML is a yawn • JSON vs. XML as a data interchange format • Examining JSON
XML与JSON的简单比较
[ XML ]
使用XML作为传输格式的优势:
- 格式统一, 符合标准
- 容易与其他系统进行远程交互, 数据共享比较方便
缺点:
- XML文件格式文件庞大, 格式复杂, 传输占用带宽
- 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
- 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码
- 服务器端和客户端解析XML花费资源和时间
[ JSON ]
那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.
优点:
- 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小
- 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取
- 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
- 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)
- 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护
缺点:
- 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性
- JSON格式目前在Web Service中推广还属于初级阶段
其它的一些相关资料
JSON Demo :
Ajax.NET Professional :
Newtonsoft Json.NET:
XML2JSON(JavaScript):
How to convert XML to JSON in ASP.NET C#:
Converting Between XML and JSON:
一个中文的总结性介绍:
AJAX跨域访问:
- http://www.xyhhxx.com/news/net/20061013121041.htm
- http://developer.yahoo.com/javascript/howto-proxy.html (包括了如何用JSON实现Cross Domain)
- http://ajaxpatterns.org/On-Demand_Javascript
- http://ajaxpatterns.org/Cross-Domain_Proxy
- http://www.thefutureoftheweb.com/blog/2006/8/cross-domain-json-without-xhr
Using JSON with Yahoo! Web Services :