一、API使用
准备阶段
1、准备实体类
import lombok.Data; @Data public class FastJsonEntity { private String name; private Integer age; private String sex; }
2、配置maven依赖 lombok
<!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </dependency>
3、配置maven依赖 fastjson
<!--fastJson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency>
简单使用与结果演示
1、将java对象转换成json字符串,支持各种java基本类型和java对象
案例一:java对象
FastJsonEntity fastJsonEntity = new FastJsonEntity(); fastJsonEntity.setName("小明"); fastJsonEntity.setAge(22); fastJsonEntity.setSex("男");
String s = JSON.toJSONString(fastJsonEntity); System.out.println(s);
运行结果:
运行结果: {"age":22,"name":"小明","sex":"男"}
案例二:集合
List<FastJsonEntity> list = new ArrayList<>(); for (int i=0;i<=3;i++){ FastJsonEntity fastJsonEntity = new FastJsonEntity(); fastJsonEntity.setName("小明"+i); fastJsonEntity.setAge(22+i); fastJsonEntity.setSex("男"+i); list.add(fastJsonEntity); } String s = JSON.toJSONString(list); System.out.println(s);
运行结果:
[
{
"age":22,
"name":"小明0",
"sex":"男0"
},
{
"age":23,
"name":"小明1",
"sex":"男1"
},
{
"age":24,
"name":"小明2",
"sex":"男2"
},
{
"age":25,
"name":"小明3",
"sex":"男3"
}
]
2、将JSON字符串转换成java对象
案例一:
String jsonString = "{\"age\":22,\"name\":\"小明\",\"sex\":\"男\"}"; FastJsonEntity fastJsonEntity = JSON.parseObject(jsonString, FastJsonEntity.class); System.out.println(fastJsonEntity); System.out.println(fastJsonEntity.getName()); System.out.println(fastJsonEntity.getAge()); System.out.println(fastJsonEntity.getSex());
运行结果
运行结果: FastJsonEntity(name=小明, age=22, sex=男) 运行结果: 小明 运行结果: 22 运行结果: 男
3、将JSON字符串转成JSONObject
String jsonString = "{\"age\":22,\"name\":\"小明\",\"sex\":\"男\"}"; Object parse = JSON.parse(jsonString); System.out.println(parse);
运行结果:
运行结果: {"age":22,"name":"小明","sex":"男"}
二、相关注解
注解名称 | 作用范围 | 属性值 |
@JSONField | 方法、字段、参数 | ordinal:控制字段的输出顺序 |
name:指定字段的名称 | ||
format:指定字段的输出格式,只对日期格格式有用 | ||
serialize:指定字段是否序列化 | ||
deserialize:指定字段是否反序列化 | ||
serialzeFeatures | ||
parseFeatures | ||
label | ||
jsonDirect:当你有一个字段是字符串类型,里面是json格式数据,你希望直接输入,而不是经过转义之后再输出。 | ||
serializeUsing | ||
deserializeUsing | ||
alternateNames:反序列化时配置多个不同的字段名称 | ||
unwrapped | ||
defaultValue |
使用案例
import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; import java.util.Date; @Data public class FastJsonEntity { @JSONField(name="name",ordinal=1) private String name; @JSONField(name="name",ordinal=2,serialize=true) private Integer age; private String sex; @JSONField(name="name",ordinal=3,format="dd/MM/yyyy") private Date bir; @JSONField(name="name",ordinal=4,format="ddMMyyyy") private Date dateOfBirth; }
三、开发中自定义工具类
/** * Object 转 JSON */public String a(Object o) { if (o instanceof Integer || o instanceof Long || o instanceof Float || o instanceof Double || o instanceof String || o instanceof Boolean) { return String.valueOf(o); } return JSON.toJSONString(o); } /** * JSON 转 Object */public <T> T b(String json, Class<T> clazz) { return JSON.parseObject(json, clazz); } /** * JSON 转 Object List */public <T> List<T> c(String value, Class<T> tClass) { return JSON.parseArray(value, tClass); }