当前位置:网站首页>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":"张三"}边栏推荐
- About dos/ddos attack and defense
- STC 32 Bit 8051 Single Chip Computer Development Example Tutorial one development environment
- 【opencv450】 图像相减、二值化、阈值分割
- 小时候 觉得爸爸就是天 无所不能~
- What do Niu B programmers pay attention to when "creating an index"?
- CF [1700d] D. River locks (DP, bisection, Mathematics)
- Memory model of JVM principle
- MySQL自定义序列数的实现
- 2022年中国重卡智能化升级专题研究
- 104. simple chat room 7: use socket to transfer objects
猜你喜欢
![[microservices | Nacos] Nacos realizes data isolation of multi environment and multi tenant](/img/dc/f00a780e96032c0b7d9b6d7c2267d1.png)
[microservices | Nacos] Nacos realizes data isolation of multi environment and multi tenant

组合式API-composition-api

Introduction to JDBC (I) DML operation

导出带水印的PDF

Three implementation methods: left fixed and right adaptive (Flex, float + BFC, float margin left)

How to conduct exploratory data analysis

Jenkins installs and deploys and automatically builds and publishes jar applications

Xa mode explanation and code implementation of four Seata modes

【opencv450】 图像相减、二值化、阈值分割

konva 系列教程 1:konva 是什么?
随机推荐
Is there a real part-time job online? How do college students find part-time jobs in summer?
[opencv450] image subtraction, binarization, threshold segmentation
Export PDF with watermark
英集芯IP5566带TYPE-C口3A充放快充移动电源5w无线充二合一方案SOC
[opencv450] inter frame difference method
数学分析_笔记_第1章:集合与映射
Meteorological mapping software panoply tutorial (updated from time to time)
组合式API-composition-api
Cloud native architecture (04) -cncf
Composite API
Investment risk management
账号多开是什么意思?为什么要账号多开?如何安全实现?
JVM原理之完整的一次GC流程
第九章 APP项目测试(1)
104. simple chat room 7: use socket to transfer objects
IDEA 代码开发完毕后,提交代码,提交后发现分支不对,怎么撤回
导出带水印的PDF
Mysql入门学习(二)之子查询+关联
LeetCode-1757. Recyclable and low-fat products_ SQL
MCS: continuous random variable chi square distribution