您的位置:首页 > Web前端 > JavaScript

JSON 之 FastJson 的简单使用

2014-11-10 18:26 453 查看

阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:

速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;

功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)



个人觉得FastJson执行效率比较高,而且简单易用。

FastJson不依赖于第三方包, 直接可以运行在Java JDK1.5之上,FastJson完全支持http://json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等。还支持循环引用。



使用fastjson,只需要将 fastjson-1.1.36.jar 引入到工程中即可使用。

下面贴出简单使用源码:

1、javaBean对象(UserInfo.java)

package cn.kpchen.fastjson.pojo;

import java.io.Serializable;

public class UserInfo implements Serializable {

private int id;
private String name;
private String phone;
private boolean isStudent;

public UserInfo() {
}

public UserInfo(int id, String name, String phone, boolean isStudent) {
this.id = id;
this.name = name;
this.phone = phone;
this.isStudent = isStudent;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public boolean getIsStudent() {
return isStudent;
}

public void setIsStudent(boolean isStudent) {
this.isStudent = isStudent;
}

@Override
public String toString() {
return "UserInfo [id=" + id + ", name=" + name + ", phone=" + phone
+ ", isStudent=" + isStudent + "]";
}

}


2、FastJson的测试(FastJsonTest.java)

package cn.kpchen.fastjson.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.junit.Test;

import cn.kpchen.fastjson.pojo.UserInfo;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;

public class FastJsonTest {

/**
* 将对象转化为json字符串
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:20:39
* @history: void
*/
@Test
public void testObjectToJson() {
UserInfo userInfo = new UserInfo(1, "张三", "13568952346", true);
// 将对象转换为JSON字符串
String str_json = JSON.toJSONString(userInfo);
System.out.println("JSON=" + str_json);
}

/**
* 将list集合转化为json字符串
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:20:19
* @history: void
*/
@Test
public void testListToJson() {
// list集合
List<UserInfo> lists = new ArrayList<UserInfo>();
for (int i = 0; i < 5; i++) {
UserInfo userInfo = new UserInfo(1 + i, "张三" + i, "1356895234" + i,
true);
lists.add(userInfo);
}

String str_json = JSON.toJSONString(lists);
System.out.println("JSON=" + str_json);
}

/**
* 将简单的map对象转化为json字符串
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:19:54
* @history: void
*/
@Test
public void testMapToJson1() {
Map<String, Object> map = new HashMap<String, Object>();
UserInfo userInfo = new UserInfo(1, "张三", "13568952346", true);
map.put("user", userInfo);
String str_json = JSON.toJSONString(map);
System.out.println(str_json);
}

/**
* 将复杂的map对象转化为json字符串
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:19:24
* @history: void
*/
@Test
public void testMapToJson2() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", "zhangsan");
map.put("age", 24);
map.put("sex", "男");

HashMap<String, Object> temp = new HashMap<String, Object>();
temp.put("name", "xiaohong");
temp.put("age", "23");

map.put("girlInfo", temp);

// list集合
List<String> list = new ArrayList<String>();
list.add("爬山");
list.add("骑车");
list.add("旅游");
map.put("hobby", list);

String str_json = JSON.toJSONString(map);
System.out.println("JSON=" + str_json);
}

/**
* 利用反序列化,将json字符串转化为对象
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:18:58
* @history: void
*/
@Test
public void testJsonToObject() {
String str_json = "{\"id\":1,\"isStudent\":true,\"name\":\"张三\",\"phone\":\"13568952346\"}";
// 反序列化
UserInfo userInfo = JSON.parseObject(str_json, UserInfo.class);
System.out.println(userInfo.getId());
System.out.println(userInfo.getPhone());

}

/**
* Map的json字符串泛型的反序列化
*
* @author: kpchen
* @createTime: 2014年11月10日 下午5:08:32
* @history: void
*/
@Test
public void testJsonToMap() {
String json = "{\"user\":{\"id\":1,\"isStudent\":true,\"name\":\"张三\",\"phone\":\"13568952346\"}}";
Map<String, UserInfo> map = JSON.parseObject(json,
new TypeReference<Map<String, UserInfo>>() {
});
// System.out.println(map.get("user"));

for (Entry<String, UserInfo> entry : map.entrySet()) {
UserInfo userInfo = entry.getValue();
System.out.println(userInfo.toString());
}
}

/**
* 格式化日期
*
* @author: kpchen
* @createTime: 2014年11月10日 下午6:18:37
* @history: void
*/
@Test
public void testDateFormat() {

Date date = new Date();
// 输出毫秒值
System.out.println(JSON.toJSONString(date));
// 默认格式为yyyy-MM-dd HH:mm:ss
System.out.println(JSON.toJSONString(date,
SerializerFeature.WriteDateUseDateFormat));
// 根据自定义格式输出日期
System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd",
SerializerFeature.WriteDateUseDateFormat));

}
}


package test;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;

class User {
private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
};

class UserGroup {
private String name;
private List<User> users = new ArrayList<User>();

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 "UserGroup [name=" + name + ", users=" + users + "]";
}
}

class FastJsonTest {
public static void main(String[] args) {
// 构建用户geust
User guestUser = new User();
guestUser.setName("guest");
guestUser.setAge(28);
// 构建用户root
User rootUser = new User();
rootUser.setName("root");
guestUser.setAge(35);
// 构建用户组对象
UserGroup group = new UserGroup();
group.setName("admin");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser);
// 用户组对象转JSON串
String jsonString = JSON.toJSONString(group);
System.out.println("jsonString:" + jsonString);
// JSON串转用户组对象
UserGroup group2 = JSON.parseObject(jsonString, UserGroup.class);
System.out.println("group2:" + group2);

// 构建用户对象数组
User[] users = new User[2];
users[0] = guestUser;
users[1] = rootUser;
// 用户对象数组转JSON串
String jsonString2 = JSON.toJSONString(users);
System.out.println("jsonString2:" + jsonString2);
// JSON串转用户对象列表
List<User> users2 = JSON.parseArray(jsonString2, User.class);
System.out.println("users2:" + users2);
}
}


jsonString:{"name":"admin","users":[{"age":35,"name":"guest"},{"age":0,"name":"root"}]}
group2:UserGroup [name=admin, users=[User [name=guest, age=35], User [name=root, age=0]]]
jsonString2:[{"age":35,"name":"guest"},{"age":0,"name":"root"}]
users2:[User [name=guest, age=35], User [name=root, age=0]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: