FastJson是一个高性能的json object转换工具,它是由阿里巴巴(alibaba)公司开发的,使用fastjson非常简单,首先在我们javaweb项目中的pom.xml中加入fastjson maven导入相关的jar包,如下。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.38</version> </dependency>
fastjson常用的方法无非就是以下几种,它们的入口都是import com.alibaba.fastjson.xxxx的,请不要使用到了别的入口文件。
// 把JSON文本解析为JSONObject或者JSONArray public static final Object parse(String text); // 将JavaBean对象转换为JSONObject或者JSONArray public static final Object toJSON(Object javaObject); // 把JSON文本解析成JSONObject public static final JSONObject parseObject(String text); // 把JSON文本解析成JSONArray public static final JSONArray parseArray(String text); // 把JSON文本解析为JavaBean对象 public static final <T> T parseObject(String text, Class<T> clazz); //常用 //把JSON文本解析成JavaBean集合 public static final <T> List<T> parseArray(String text, Class<T> clazz); //常用 // 将JavaBean对象序列化为JSON字符串 public static final String toJSONString(Object object); //常用 // 将JavaBean对象序列化为带格式的JSON字符串 public static final String toJSONString(Object object, boolean prettyFormat); //常用
为什么有些要将json字符串或javabean对象转换为JSONObject/JSONArray对象呢,这是因为JSONObject/JSONArray里面有很多操作json字符串的方法,例如
JSONObject.get(key) //获取某个key值 JSONObject.remove(key) //删除某个key ..... JSONArray.add(object) //添加某个对象到jsonArray中 .....
下面将用一个简单案例来讲解如何使用FastJson来操作json字符串,例如有以下这样一段json字符串,它是一个用户列表的json数据,如下。
[{"id":96,"username":"lisi1","password":"888888","phone":"66666","address":"北京","score":75},
{"id":97,"username":"lisi2","password":"888889","phone":"66667","address":"湖北","score":76},
{"id":98,"username":"lisi3","password":"888890","phone":"66668","address":"江西","score":77}]它对应的JavaBean实体类对象为User类,如下所示。
package com.maizhe.entity;
public class User {
private Integer id;
private String username;
private String password;
private String phone;
private String address;
private Integer score;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
}使用最上面列举的FastJson方法将用户列表json数据转化为用户集合List<User>的形式,很简单。
//jsonStr表示的是上面的那段json字符串数据 List<User> list = JSONObject.parseArray(jsonStr,User.class);
当然了,我们也可以将这个List<User> list 转换回原来的json字符串,可以使用以下方法,很是简单。
String jsonStr= JSONObject.toJSONString(list);
假如最上面的那个json字符串不是一个字符串数组,而只是一个字符串对象,如下这样。
{"id":96,"username":"lisi1","password":"888888","phone":"66666","address":"北京","score":75}那么我们可以将上面这段json直接转化为User对象,而不是User List集合,如下。
User user = JSONObject.parseObject(jsonStr,User.class);