当前位置:网站首页>fastjson中的@JSONField注解
fastjson中的@JSONField注解
2022-06-23 03:57:00 【y_bccl27】
使用fastjson之前需先引入下述依赖,当前版本为1.2.75
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>JSONField中的name属性用来指定JSON串中key的名称
[email protected]注解作用在属性(成员变量)上
import com.alibaba.fastjson.annotation.JSONField;
public class Person {
@JSONField(name = "userName")
private String name;
@JSONField(name = "AGE")
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}序列化测试:
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
import java.util.Date;
public class Demo {
public static void main(String[] args){
Person person=new Person();
person.setName("张三");
person.setAge("20");
person.setDate(new Date());
String jsonStr = JSONObject.toJSONString(person);
System.out.println(jsonStr);
}
}执行上述代码,其输出结果为:
{"AGE":"20","userName":"张三"}反序列化测试:
import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
public class Demo {
public static void main(String[] args){
String jsonStr="{\"AGE\":\"20\",\"userName\":\"张三\"}";
Person person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
System.out.println("json to bean:" + person.getName());
}
}执行上述代码,其输出结果为:
json to bean:张三@JSONField作用在Field时,其name不仅定义了输出的名称,同时也定义了输入key的名称
[email protected]注解作用在方法上
import com.alibaba.fastjson.annotation.JSONField;
public class Person {
private String name;
private String age;
// 针对的是序列化操作
@JSONField(name = "userName")
public String getName() {
return name;
}
// 针对的是反序列化操作
@JSONField(name = "userName")
public void setName(String name) {
this.name = name;
}
@JSONField(name = "AGE")
public String getAge() {
return age;
}
@JSONField(name = "AGE")
public void setAge(String age) {
this.age = age;
}
}import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
public class Demo {
public static void main(String[] args){
// 序列化
Person person=new Person();
person.setName("张三");
person.setAge("20");
String jsonStr = JSONObject.toJSONString(person);
System.out.println(jsonStr);
// 反序列化
// String jsonStr="{\"AGE\":\"20\",\"userName\":\"张三\"}";
// Person person = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Person.class);
// System.out.println("json to bean:" + person.getName());
}
}执行上述代码,其输出结果为:
{"AGE":"20","userName":"张三"}fastjson在进行操作时,是根据getter和setter的方法进行的,并不是依据Field进行
[email protected]注解中的format属性
format属性用于规定序列化和反序列化时成员变量的日期格式
import com.alibaba.fastjson.annotation.JSONField;
import java.util.Date;
public class Person {
private String name;
private String age;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
import java.util.Date;
public class Demo {
public static void main(String[] args){
// 序列化
Person person=new Person();
person.setName("张三");
person.setAge("20");
person.setDate(new Date());
String jsonStr = JSONObject.toJSONString(person);
System.out.println(jsonStr);
}
}执行上述代码,其输出结果为:
{"age":"20","date":"2022-06-21 09:52:37","name":"张三"}[email protected]注解中的ordinal属性
ordinal属性用于规定序列化时字段的顺序
import com.alibaba.fastjson.annotation.JSONField;
public class Person {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String age;
@JSONField(ordinal = 3)
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
public class Demo {
public static void main(String[] args){
// 序列化
Person person=new Person();
person.setName("张三");
person.setAge("20");
person.setSex("男");
String jsonStr = JSONObject.toJSONString(person);
System.out.println(jsonStr);
}
}执行上述代码,其输出结果为:
{"name":"张三","age":"20","sex":"男"}[email protected]注解中的serialize属性
serialize属性其取值为false时表示该字段不进行序列化,就是转化为json字符串时不生成该字段
import com.alibaba.fastjson.annotation.JSONField;
import java.util.Date;
public class Person {
private String name;
private String age;
// 指定字段不进行序列化,就是转化为json字符串时不生成该字段
@JSONField(serialize=false)
private Date date;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}import com.alibaba.fastjson.JSONObject;
import com.bc.model.Person;
import java.util.Date;
public class Demo {
public static void main(String[] args){
// 序列化
Person person=new Person();
person.setName("张三");
person.setAge("20");
person.setDate(new Date());
String jsonStr = JSONObject.toJSONString(person);
System.out.println(jsonStr);
}
}执行上述代码,其输出结果为:
{"age":"20","name":"张三"}边栏推荐
- Konva series tutorial 1:what is konva?
- 英文字母pc是什么意思,互联网的pc指的是什么
- Design and implementation of spark offline development framework
- JDBC入门学习(二)之封装工具类
- Go language - custom error
- JVM原理之完整的一次GC流程
- H5 适配全面屏
- MCS: continuous random variable lognormal distribution
- JDBC入门学习(一)之DML操作
- Ams:startactivity desktop launch application
猜你喜欢

SIFT feature point extraction

MCS:连续随机变量——LogNormal分布

MCS:连续随机变量——Student’s t分布

Un processus GC complet pour le principe JVM

数据库连接异常:create connection error, url: jdbc:mysql://ip/数据库名, errorCode 0, state 08S01问题处理

Design and implementation of spark offline development framework

牛B程序员在“创建索引”时都会注意啥?

Drag and drop frame

Calculate Euclidean distance and cosine similarity

JVM原理之完整的一次GC流程
随机推荐
JVM原理之内存模型
英集芯IP5566带TYPE-C口3A充放快充移动电源5w无线充二合一方案SOC
Spark 离线开发框架设计与实现
导出带水印的PDF
Jetpack compose menubar Desktop Menu from door opening to entry
JDBC入门学习(三)之事务回滚功能的实现
Ams:startactivity desktop launch application
What if win11 cannot record audio? Solution of win11 unable to input sound
数学分析_笔记_第1章:集合与映射
关于信息泄露和防御
英文字母pc是什么意思,互联网的pc指的是什么
云原生架构(04)-CNCF
Win11 app store keeps turning around solution
Zygote process
C language stack implementation
第九章 APP项目测试(1)
今日睡眠质量记录80分
Drama asking Huamen restaurant Weng
Mathematical analysis_ Notes_ Chapter 1: set and mapping
IDEA 代码开发完毕后,提交代码,提交后发现分支不对,怎么撤回