Json

 

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数组

 

posted @ 2018-08-22 16:34  panchanggui  阅读(229)  评论(0编辑  收藏  举报