第六篇:fastJson常⽤⽅法总结
1、了解json
json就是⼀串字符串只不过元素会使⽤特定的符号标注。
{} 双括号表⽰对象
[] 中括号表⽰数组
"" 双引号内是属性或值
: 冒号表⽰后者是前者的值(这个值可以是字符串、数字、也可以是另⼀个数组或对象)
所以 {"name": "Kobe"} 可以理解为是⼀个包含name为Kobe的对象
⽽[{"name": "Michael"},{"name": "Kobe"}]就表⽰包含两个对象的数组
当前java的第三⽅json库⾮常多,google的gson,alibaba的fastJson,jackson,微软的也有⼀个,还有java⾃⼰的json ,查了下效率和受欢迎度,以后就选择马云的fastJson作为常⽤的json解析和构建⼯具了
2、了解fastJson
(1)功能强⼤,⽀持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型
(2)⽆依赖,不需要例外额外的jar,能够直接跑在JDK上
(3)⽀持注解等等这些⾼级的特性还没接触到,不谈
(4)⼏个对⽐助于理解
SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
(5)API⼊⼝类是com.alibaba.fastjson.JSON,常⽤的序列化操作都可以在JSON类上的静态⽅法直接完成
1 public static final Object parse(String text);                                    // 把JSON⽂本转换成JSONObject或者JSONArray
2 public static final JSONObject parseObject(String text);                  // 把JSON⽂本转换成JSONObject
3 public static final JSONArray parseArray(String text);                    // 把JSON⽂本转换成JSONArray
4 public static final <T> T parseObject(String text, Class<T> clazz);  // 把JSON⽂本转换成JavaBean
5 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON⽂本转换成JavaBean集合
6 public static final String toJSONString(Object object);                    // 将JavaBean序列化为JSON⽂本fastjson怎么用
7 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON⽂本
8 public static final Object toJson(Obiect javaObject);        //将JavaBean转换为JSONObject或者JSONArray
3、解析
⾸先要明⽩⼀个规律,⽆论传过来的jsonStr怎么组装,怎么嵌套,都逃不了以下三种,形如[]的JSONArray,形如{}的JSONObject以
及“:”连接的键值对,因此解析的第⼀步要先判断是⽤parseObject还是parseArray⽅法(前5种),特别提醒如果直接⽤⽅法1,⼀般要强制转换。前提是你知道传过来的json字符串的格式。第⼀步解析完之后需要⽤到下⾯两类⽅法来调⽤:
public JSONObject getJSONObject(int index);  //读取对象
public JSONObject getJSONObject(String key);  //读取对象
public JSONArray getJSONArray (int index);  //读取数组
public JSONArray getJSONArray (String key);  //读取数组
有时候需要最终取出数据,那么解析到最后⼀层形如{a:b,c:d,e:f} 的时候就可以直接⽤
JSONObject⾥的各种取数据的⽅法,⽐如随便说⼏个,getLongValue(),getString(),getInteger(),参数均为key
例:如下json字符串解析str
[
{
"id": 1
"type": "cycle",
"attribute": {
"center": "(10.4, 123.345)",
"radius": 67.4
}
},
{
"id": 2,
"type": "polygon",
"attribute": [
{
"vertex": "(10.4,133.345)"
},
{
"vertex": "(10.4,143.345)"
}
]
}
]
现在我要得到最后的 "vertex": "(10.4,143.345)"这条数据
⾸先,最外层是数组
JSONArray ja = JSON.parseArray(str);
ja这个json数组内部是两个对象,取出第⼆个(id为2的那个对象)
JSONObject jo = ja.getJSONObject(1) ;
jo这个json对象中有3个键值对,取出第三个,key为attribute的那个,取出后结果为数组,so
JSONArray ja1 = jo.getJSONObject("attribute");
ja1这个json数组内部有两个对象,取出第⼆个
JSONObject jo1 = JSONObject(1) ;
jo1就是 {"vertex": "(10.4,143.345)"}这个对象,现在⾥⾯就1个键值对了,取出来就是了
String s = String("vertex");
System.out.println(s);//结果为(10.4,143.345)
这个是最基本的取值,其他的还有遍历,⽤javaBean的暂时没碰到,暂时也不去总结,⾄于构建,⼀般都是从list,map转化,或者是在前台js中,⽐如我的上⼀篇的ztree打包的数据,我就⽤js的 JSON.stringify(dataList)来打包成json格式的传到后台的
接下来还有java 中list,map,和json之间的转换

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。