java jsonfield_定制序列化之@JSONField的使用

java jsonfield_定制序列化之@JSONField的使用fastjson 支持多种方式定制序列化 通过 JSONField 定制序列化通过 JSONType 定制序列化通过 SerializeFil 定制序列化通过 ParseProcess 定制反序列化 JSONField 的使用 1 利用 JSONField 的 format 配置日期格式化 这个在上一篇文章有所展示 2 利用 JSONField 的 serialize 指定字段不序列化 packagecom an

fastjson支持多种方式定制序列化:

通过@JSONField定制序列化

通过@JSONType定制序列化

通过SerializeFilter定制序列化

通过ParseProcess定制反序列化

@JSONField的使用:

1. 利用@JSONField的format配置日期格式化,这个在上一篇文章有所展示。

2. 利用@JSONField的serialize指定字段不序列化:

package com.ant.jdk8.json;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

public class User {

private String name;

@JSONField(serialize=false)

private int age;

@JSONField(format=”yyyy-MM-dd HH:mm:ss”)

private Date hireDate;

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;

}

public Date getHireDate() {

return hireDate;

}

public void setHireDate(Date hireDate) {

this.hireDate = hireDate;

}

public User(String name, int age, Date hireDate) {

this.name = name;

this.age = age;

this.hireDate = hireDate;

}

public User() {

}

}

package com.ant.jdk8.json;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

public class JsonDemo {

public static void main(String[] args) {

convertCollectionToJson();

}

public static void convertCollectionToJson(){

List userList = new ArrayList<>();

userList.add(new User(“tom”,20,new Date()));

userList.add(new User(“jack”,25,new Date()));

String jsonString = JSON.toJSONString(userList);

System.out.println(jsonString);

}

}

2567f3aa8e0f591a5c6195dbdd6cb189.png

3. 利用@JSONField的ordinal指定序列化的顺序(这个特性需要1.1.42以上版本):

package com.ant.jdk8.json;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

public class User {

@JSONField(ordinal=3)

private String name;

@JSONField(ordinal=2)

private int age;

@JSONField(format=”yyyy-MM-dd HH:mm:ss”,ordinal = 1)

private Date hireDate;

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;

}

public Date getHireDate() {

return hireDate;

}

public void setHireDate(Date hireDate) {

this.hireDate = hireDate;

}

public User(String name, int age, Date hireDate) {

this.name = name;

this.age = age;

this.hireDate = hireDate;

}

public User() {

}

}

package com.ant.jdk8.json;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

public class JsonDemo {

public static void main(String[] args) {

convertCollectionToJson();

}

public static void convertCollectionToJson(){

List userList = new ArrayList<>();

userList.add(new User(“tom”,20,new Date()));

userList.add(new User(“jack”,25,new Date()));

String jsonString = JSON.toJSONString(userList);

System.out.println(jsonString);

}

}

8ab7c8fd1ee333292eebcf7d9ecb69de.png

4. 利用@JSONField的name指定字段的名称:

package com.ant.jdk8.json;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

public class User {

@JSONField(ordinal=3,name=”username”)

private String name;

@JSONField(ordinal=2)

private int age;

@JSONField(format=”yyyy-MM-dd HH:mm:ss”,ordinal = 1)

private Date hireDate;

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;

}

public Date getHireDate() {

return hireDate;

}

public void setHireDate(Date hireDate) {

this.hireDate = hireDate;

}

public User(String name, int age, Date hireDate) {

this.name = name;

this.age = age;

this.hireDate = hireDate;

}

public User() {

}

}

package com.ant.jdk8.json;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

public class JsonDemo {

public static void main(String[] args) {

convertCollectionToJson();

}

public static void convertCollectionToJson(){

List userList = new ArrayList<>();

userList.add(new User(“tom”,20,new Date()));

userList.add(new User(“jack”,25,new Date()));

String jsonString = JSON.toJSONString(userList);

System.out.println(jsonString);

}

}

5f9298d8a8c6b1658670daab8796d349.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230166.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午2:59
下一篇 2026年3月16日 下午2:59


相关推荐

  • HashMap与ConcurrentHashMap的区别「建议收藏」

    HashMap与ConcurrentHashMap的区别「建议收藏」从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的DougLea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable。从Conc

    2022年6月24日
    24
  • 弱网测试总结

    弱网测试总结一 弱网测试网络请求 代理 proxy 进行目标操作 修改返回值 amp 延迟 amp 丢包等 返回给数据接收端二 弱网测试的重要性 1 弱网情况下 缺少丢包 延时软件的处理机制 程序处理出问题 2 实时同步性高的场景 微信视频聊天 远程会议 同步书写等例如 网络直播网络差会导致绿屏 花屏 条纹 丢帧等问题三 弱网测试会出现哪些 bug 转载 https www jianshu com p 7b1cbb4a0e73 现象 没进入到后台 可以在前端请求开始

    2026年3月18日
    2
  • 解析近期爆发的服务器挖矿病毒原理

    解析近期爆发的服务器挖矿病毒原理事情起因:同事解决服务器中挖矿病毒的过程可以看到,病毒的主要起因是利用了Linux预加载型恶意动态链接库的后门,关于Linux预加载的知识可以参考这一篇文章:警惕利用Linux预加载型恶意动态链接库的后门 一、准备工作我们导出病毒文件 libioset.so,然后利用IDA反编译该so文件,得到如下图的函数列表:可以看到,里面有许多我们熟悉的库函数,例如fope…

    2022年5月2日
    136
  • 如何编写缺陷报告_测试缺陷报告模板

    如何编写缺陷报告_测试缺陷报告模板缺陷报告

    2025年11月30日
    7
  • 视频教程:Java从入门到精通

    视频教程:Java从入门到精通原文:http://www.pconline.com.cn/pcedu/empolder/gj/java/0606/815015.html《Java从入门到精通》视频教程由孙鑫老师录制(作者网站:http://www.sunxin.org),教程通俗易懂,内容全面,带领Java初学者从入门到精通,快速掌握Java编程语言。  说明:学习本套教程,您需要了解一些基本的编程开发基础知识,例如…

    2022年5月16日
    38
  • request content was evicted from inspector cache

    request content was evicted from inspector cache问题:浏览器无法查看返回数据,但是功能页面数据渲染没问题,原因:响应报文被截断,超出浏览器响应报文的最大量,浏览器自动截断,解决方式,:后端处理,减少该接口返回的数据量

    2022年5月17日
    146

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号