最近工作中用到fastjson和jackjson(原生json大家都用过的~~~),做下笔记, 这里先说下fastjson的主要API用法。
一、fastjson介绍:
摘自官方介绍: Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Fastjson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of. 由于英语水平不行借助翻译软件翻译下:Fastjson是一个Java库,它可以用来将Java对象转换为JSON表示。它还可以用于将一个JSON字符串转换为一个等价的Java对象。Fastjson可以与任意Java对象一起工作,包括预先存在的对象 附GitHub地址 https://github.com/alibaba/fastjson fastjson的优点:
- 遵循http://json.org标准,为其官方网站收录的参考实现之一。
- 功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
- 无依赖,不需要例外额外的jar,能够直接跑在JDK上。
二、引入fastjson
maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
如果非maven项目下载对应jar即可 地址: http://repo1.maven.org/maven2/com/alibaba/fastjson/
三、核心API用法:
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
四、示例代码:
package com.mcgrady.test.fastjson;
import java.util.ArrayList;
import java.util.List;
public class Group {
private Long id;
private String name;
private List<User> users = new ArrayList<User>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String toString() {
return "Group [id=" + id + ", name=" + name + ", users=" + users + "]";
}
}
package com.mcgrady.test.fastjson;
public class User {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
使用Junit进行测试演示 :
package com.mcgrady.test.fastjson;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/*
alibaba fastjson 测试类
**/
public class FastjsonTest {
@Test
public void testMethod1() {
Group group = new Group();
group.setId(1001L);
group.setName("haaopeng");
User guestUser = new User();
guestUser.setId(1002L);
guestUser.setName("mcgrady");
User rootUser = new User();
rootUser.setId(1003L);
rootUser.setName("root");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser);
// 1.public static final String toJSONString(Object object, boolean
// prettyFormat);
// String jsonString = JSON.toJSONString(group);
// 把javabean序列化为带格式的JSON字符串
String jsonString = JSON.toJSONString(group);
System.out.println("1.toJSONString(Object) 将javabean转为json----> " + jsonString);
// 2.public static final Object toJSON(Object javaObject);
// 将JavaBean转换为JSONObject或者JSONArray
// System.out.println(JSON.toJSON(group));
List<User> userList = new ArrayList<User>();
userList.add(guestUser);
userList.add(rootUser);
String userbeanStr = JSON.toJSON(guestUser).toString();
System.out
.println("2.toJSON(Object javaObject) 将javabean转为jsonobject或者jsonarray---> " + JSON.toJSON(guestUser));
String jsonarrayStr = JSON.toJSON(userList).toString();
// 3.public static final Object parse(String text);
// 把JSON文本parse为JSONObject或者JSONArray
String jsonStr = "{\"id\":0,\"name\":\"admin\",\"users\":[{\"id\":2,\"name\":\"guest\"},{\"id\":3,\"name\":\"root\"}]}";
Object obj = JSON.parse(jsonStr);
if (obj instanceof JSONObject) {
System.out.println("3.parse(String text) 将串转为jsonobject---> " + (JSONObject) obj);
} else if (obj instanceof JSONArray) {
System.out.println("3.parse(String text) 将串转为jsonarray---> " + (JSONArray) obj);
}
// 4.public static final Object parse(String text);
// 把JSON文本parse为JSONObject或者JSONArray
System.out.println(
"4.parseObject:将object串转化为JSONObject---> " + JSON.parseObject("{\"id\":2,\"name\":\"guest\"}"));
// 5. public static final JSONArray parseArray(String text); //
// 把JSON文本parse成JSONArray
System.out.println("5.parseArray:将array串转化为JSONArray---> " + JSON.parseArray(jsonarrayStr));
// 6.public static final <T> T parseObject(String text, Class<T> clazz);
// // 把JSON文本parse为JavaBean
User user = null;
user = JSON.parseObject(userbeanStr, User.class);
System.out.println("6. <T> T parseObject(String text, Class<T> clazz) 将jsonobject串转为javabean ---> " + user);
// 7. public static final <T> List<T> parseArray(String text, Class<T>
// clazz); //把JSON文本parse成JavaBean集合
List<User> list1 = null;
list1 = JSON.parseArray(jsonarrayStr, User.class);
System.out.println(" 7.<T> List<T> parseArray(String text, Class<T> clazz) 将jsonarray串转为list集合---> " + list1);
}
}