FastJson 基础教程
来源:互联网 发布:知乎搞笑问题 编辑:程序博客网 时间:2024/05/22 00:47
介绍
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
教程
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
package com.zzg.entity;
import java.io.Serializable;
public class Address implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String provice;
private String city;
private String area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProvice() {
return provice;
}
public void setProvice(String provice) {
this.provice = provice;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int sex;
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
1、序列化
主要通过 JSON.toJSONString方法将Bean转换为json。
//通过 JSON.toJSONString方法将Bean转换为json。
User user =new User();
user.setId(1);
user.setName("周志刚");
user.setSex(1);
List<Address> address=new ArrayList<Address>();
Address one = new Address();
one.setArea("开福区");
one.setCity("长沙市");
one.setId(1);
one.setProvice("湖南省");
address.add(one);
Address two = new Address();
two.setArea("天河区");
two.setCity("广州市");
two.setId(1);
two.setProvice("广东省");
address.add(two);
user.setList(address);
System.out.println("结果:"+JSON.toJSONString(user));
结果如下:
{"id":1,"list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"name":"周志刚","sex":1}
2、反序列化
主要通过JSON.parseObject方法将json转换为Bean对象,如下:
//通过JSON.parseObject方法将json转换为Bean对象
String json = "{\"id\":1,\"list\":[{\"area\":\"开福区\",\"city\":\"长沙市\",\"id\":1,\"provice\":\"湖南省\"},{\"area\":\"天河区\",\"city\":\"广州市\",\"id\":1,\"provice\":\"广东省\"}],\"name\":\"周志刚\",\"sex\":1}";
User u = JSON.parseObject(json, User.class);
System.out.println("用户名次:"+u.getName());
结果如下:
用户名次:周志刚
3、JSONField 介绍
package com.alibaba.fastjson.annotation;
public @interface JSONField {
// 配置序列化和反序列化的顺序,1.1.42版本之后才支持
int ordinal() default 0;
// 指定字段的名称
String name() default "";
// 指定字段的格式,对日期格式有用
String format() default "";
// 是否序列化
boolean serialize() default true;
// 是否反序列化
boolean deserialize() default true;
}
3.1 指定序列化名称
指定User的list属性在序列化时变成addr_list,如下:
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int sex;
@JSONField(name="addr_list")
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
输出结果:
{"addr_list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"id":1,"name":"周志刚","sex":1}
3.2 使用serialize/deserialize指定字段不序列化
控制sex属性不序列化,如下:
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
@JSONField(serialize=false)
private int sex;
@JSONField(name="addr_list")
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
结果输出:
{"addr_list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"id":1,"name":"周志刚"}
3.3 使用ordinal指定字段的顺序
package com.zzg.entity;
import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONField;
public class Address implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@JSONField(ordinal = 4)
private int id;
@JSONField(ordinal = 1)
private String provice;
@JSONField(ordinal = 2)
private String city;
@JSONField(ordinal = 3)
private String area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProvice() {
return provice;
}
public void setProvice(String provice) {
this.provice = provice;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
输出结果:
{"addr_list":[{"provice":"湖南省","city":"长沙市","area":"开福区","id":1},{"provice":"广东省","city":"广州市","area":"天河区","id":1}],"id":1,"name":"周志刚"}
参考资料:
https://github.com/alibaba/fastjson/wiki/JSONField
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
教程
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
package com.zzg.entity;
import java.io.Serializable;
public class Address implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String provice;
private String city;
private String area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProvice() {
return provice;
}
public void setProvice(String provice) {
this.provice = provice;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int sex;
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
1、序列化
主要通过 JSON.toJSONString方法将Bean转换为json。
//通过 JSON.toJSONString方法将Bean转换为json。
User user =new User();
user.setId(1);
user.setName("周志刚");
user.setSex(1);
List<Address> address=new ArrayList<Address>();
Address one = new Address();
one.setArea("开福区");
one.setCity("长沙市");
one.setId(1);
one.setProvice("湖南省");
address.add(one);
Address two = new Address();
two.setArea("天河区");
two.setCity("广州市");
two.setId(1);
two.setProvice("广东省");
address.add(two);
user.setList(address);
System.out.println("结果:"+JSON.toJSONString(user));
结果如下:
{"id":1,"list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"name":"周志刚","sex":1}
2、反序列化
主要通过JSON.parseObject方法将json转换为Bean对象,如下:
//通过JSON.parseObject方法将json转换为Bean对象
String json = "{\"id\":1,\"list\":[{\"area\":\"开福区\",\"city\":\"长沙市\",\"id\":1,\"provice\":\"湖南省\"},{\"area\":\"天河区\",\"city\":\"广州市\",\"id\":1,\"provice\":\"广东省\"}],\"name\":\"周志刚\",\"sex\":1}";
User u = JSON.parseObject(json, User.class);
System.out.println("用户名次:"+u.getName());
结果如下:
用户名次:周志刚
3、JSONField 介绍
package com.alibaba.fastjson.annotation;
public @interface JSONField {
// 配置序列化和反序列化的顺序,1.1.42版本之后才支持
int ordinal() default 0;
// 指定字段的名称
String name() default "";
// 指定字段的格式,对日期格式有用
String format() default "";
// 是否序列化
boolean serialize() default true;
// 是否反序列化
boolean deserialize() default true;
}
3.1 指定序列化名称
指定User的list属性在序列化时变成addr_list,如下:
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int sex;
@JSONField(name="addr_list")
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
输出结果:
{"addr_list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"id":1,"name":"周志刚","sex":1}
3.2 使用serialize/deserialize指定字段不序列化
控制sex属性不序列化,如下:
package com.zzg.entity;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
@JSONField(serialize=false)
private int sex;
@JSONField(name="addr_list")
private List<Address> list;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public List<Address> getList() {
return list;
}
public void setList(List<Address> list) {
this.list = list;
}
}
结果输出:
{"addr_list":[{"area":"开福区","city":"长沙市","id":1,"provice":"湖南省"},{"area":"天河区","city":"广州市","id":1,"provice":"广东省"}],"id":1,"name":"周志刚"}
3.3 使用ordinal指定字段的顺序
package com.zzg.entity;
import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONField;
public class Address implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@JSONField(ordinal = 4)
private int id;
@JSONField(ordinal = 1)
private String provice;
@JSONField(ordinal = 2)
private String city;
@JSONField(ordinal = 3)
private String area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProvice() {
return provice;
}
public void setProvice(String provice) {
this.provice = provice;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
输出结果:
{"addr_list":[{"provice":"湖南省","city":"长沙市","area":"开福区","id":1},{"provice":"广东省","city":"广州市","area":"天河区","id":1}],"id":1,"name":"周志刚"}
参考资料:
https://github.com/alibaba/fastjson/wiki/JSONField
0 0
- FastJson 基础教程
- fastJson
- FastJson
- fastjson
- fastjson
- fastjson
- fastjson
- fastjson
- fastJson
- fastjson
- fastjson
- fastJson
- fastjson
- fastjson
- fastjson
- fastjson
- fastjson
- fastJson
- [最大流] 计划安排
- Qt Designer 5.6.2无法打开
- Node.js v6.10.1在webStrom里配置less转css步骤
- Android 内存优化实践与总结
- python3.x之爬虫学习
- FastJson 基础教程
- HDU 2072 字符串处理(判重)
- 测量坐标系换算的安卓程序开发
- 为什么w要找s做经纪人?------聊聊软件系统中agent的构思与作用
- Android折线走势图
- 远程访问 MySQL
- 杭电oj--2005
- Spark RDD的缓存 rdd.cache() 和 rdd.persist()
- Ubuntu:128M下运行MySQL