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);