JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言
Java处理JSON数据有四个比较流行的类库FastJSON、Gson、Jackson和Json-lib。
语法
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
序列号和反序列号
序列化就是指 把JavaBean对象转成JSON格式的字符串。
反序列化就是把JSON格式的字符串转化为Java Bean对象。
Jackson
Gson
Google Json
FastJSON
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
Json-lib net.sf.json包
json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,
包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,
对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的list或者map集合,json-lib从json到bean的转换就会出现问题。
json-lib在功能和性能上面都不能满足现在互联网化的需求。
依赖包:
commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json-lib-2.4-jdk15.jar
java JSON字符串解析
org.json包
从字符串jsonString获得JSONObject对象和JSONArray对象
/*json字符串最外层是大括号时:*/
JSONObject jsonObject = new JSONObject(jsonStr);
/*json字符串最外层是方括号时:*/
JSONArray jsonArray = new JSONArray(jsonStr);
从JSONArray中获得JSONObject对象
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
}
注意:
/*JSONObject 获取jsonArray :需要数组的字段名*/
JSONArray jsonArray = jsonObject.getJSONArray("children");
遇到方括号时,就要先获取JSONArray,然后再循环遍历出JSONObject
/*jsonArray获取JSONObject : 需要遍历数组*/
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
}
通过JsonObject获取JSON内的具体数据:
int mid= jsonObject.getInt ( "id" ) ;
// 这里的mid得到的数据就是123.
String mcourse=jsonObject.getString( " courseID") ;
// 这里的mcourse得到的数据就是huangt-test.
net.sf.json包
JSONObject
JSON对象
JSONArray
JSON数组