JSON简介以及JAVA API
2014-10-24
背景
最近做个数据采集的东西,初步决定使用JSON作为数据交换格式,OK,学习整理一下。
JSON简介
JSON(JavaScript Object Notation),轻量级的数据交换格式,易于阅读和编写,同时机器也很容易输出JSON格式、解析JSON格式。JSON是完全独立于语言的文本格式,这使其成为理想的数据交换语言。
JSON中两类基本结构:
key:value
:键-值对,通过key来标识value;array
:有序的数组;
JSON利用上述的两类基本结构,实现了集中基本数据类型:
Object:An object is an unordered set of name/value pairs. An object begins with { (left brace) and ends with } (right brace). Each name is followed by : (colon) and the name/value pairs are separated by ,
(comma).
(无序的key-value对,以{
开头,以}
结尾,其内部以,
逗号分隔)
Array:An array is an ordered collection of values. An array begins with [
(left bracket) and ends with ]
(right bracket). Values are separated by , (comma).
(有序的value序列,以[
开头,以]
结尾,其内部以,
逗号分隔)
Value:A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.
(Value表示的内容比较广,既可以是”“包含起来的String,也可以是数字,或者true
`false;另一方面,也可以是
Object`或者array)
String:A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.
(""
双引号包含起来的Unicode 字符,其中可以使用backslash
来标识转义字符)
Number:A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used. (不支持octal和hexadecimal formats)
Whitespace can be inserted between any pair of tokens. Excepting a few encoding details, that completely describes the language.
(任何符号之间都可插入空格whitespace
)
notes(ningg):JSON中key
能否重复?
处理JSON的JAVA API
处理JSON格式数据,无非两条路:
- JDK 自带的 Java API;(官方)
- 第三方jar包提供的java API;
特别说明:JSR 353指出,今后的Java SE 6以及Java EE 7中要添加API来支持JSON格式数据的解析和转换。当前个人查证,在JDK6u30中没有java API来解析JSON;Java EE 7中,已经提供了javax.json
包来支持解析JSON。
当前项目需求,在JDK5以及之上的版本都能进行JSON字符串与JSON对象之间的转换,OK,那直接上第三方jar包得了。
java解析JSON的第三方jar包
从JSON 主页可知,当前,有很多的第三方jar包:org.json、org.json.me、jsonp、Jackson Json Processor、google-gson、Json-lib…,有点多呀,到底选哪个呢?当前初步考虑在如下两个中选:
- Spring中使用的是org.codehaus.jackson详细版本号
1.9.13
(后来Spring 3.2中已经支持Jackson2了) - google-gson的官方网站打不开,不过在maven中央仓库找到了gson的jar包,虽然无法查看官网的文档,不过maven中央仓库的javadoc、source文件也可以用来学习。
最终决定采用gson,其基本的JSON操作,参考:JSON转换利器:Gson
解析JSON字符串的效率问题
处理JSON的Java API :JSON的简介中提到解析JSON的API分为两类:
- 对象模型API
- 流API
这两种方式在原理、效率上都有差异,TODO
参考来源
原文地址:https://ningg.top/json-java-api/