首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >fastjson 注解(JAVA注解)

fastjson 注解(JAVA注解)

作者头像
全栈程序员站长
发布于 2022-07-25 13:42:03
发布于 2022-07-25 13:42:03
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

查看@JSONField注解的源码可以了解到它的作用范围是在方法(METHOD)、属性(FIELD)、方法中的参数(PARAMETER)上。

1.作用在FIELD(成员变量上)

注意:1、若属性是私有的,必须有set*方法。否则无法反序列化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.zhujie;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;

public class User { 
   
    @JSONField(name="new_username")
    private String username;
    @JSONField(name="new_password")
    private String password;

    ...

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return JSONObject.toJSONString(this);
    }
    public static void main(String[] args) {
        User user = new User();
        user.setUsername("lili");
        user.setPassword("123456");

        String jsonStr = JSONObject.toJSONString(user);
        System.out.println("bean to json:"+jsonStr);

        User user1 = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), User.class);
        System.out.println("json to bean:"+user1.toString());
    }
}

输出结果是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bean to json:{
  
  "new_password":"123456","new_username":"lili"}
json to bean:{
  
  "new_password":"123456","new_username":"lili"}

通过上面的例子可以看出@JSONField注解可以改变序列化和反序列化字段的名称。

2.注解作用在set、get方法之上
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @JSONField(name="new_username")
    public String getUsername() {
        return username;
    }
    @JSONField(name="new_username")
    public void setUsername(String username) {
        this.username = username;
    }

注解作用在方法之上序列化和反序列化生成的对象的字段名称都是new_username,可以改变字段的名称,跟上面直接注解到属性上是一样的效果。

3.注解中的serialize、deserialize用法

翻看源码可以看到serialize、deserialize的默认值都是true,也就是说默认情况下(即使不设置serialize、deserialize属性)是允许对象序列化和反序列化的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @JSONField(name="new_password", serialize=false, deserialize=false)
    private String password;
4.注解中的format用法

源码中format属性的默认值是“”空字符串,我所了解到的是用在日期属性上的格式化,如果有其它的用法可以相互交流学习。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date currentDate;
5.注解中的serialzeFeatures、parseFeatures属性可以控制序列化的一些规则。

通常情况下如果一个 字段的属性值为null时序列化或者反序列化的时候是不会将该字段输出的;

那么我们有没有办法来控制呢?

答案是可以的;

我们可以通过serialzeFeatures、parseFeatures的属性值SerializerFeature.WriteMapNullValue来控制,当属性的值为null时也输出该字段,字段的值为null。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @JSONField(format="yyyy-MM-dd HH:mm:ss", serialzeFeatures=SerializerFeature.WriteMapNullValue)
    private Date currentDate;

当然SerializerFeature类中还有很多其他的属性,我会在接下来的章节中讲解。

6.使用ordinal指定字段顺序

缺省fastjson序列化一个java bean,是根据fieldName的字母序进行序列化的,你可以通过ordinal指定字段的顺序。这个特性需要1.1.42以上版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @JSONField(ordinal =2)
    private String username;

    @JSONField(ordinal =3)
    private String password;

    @JSONField(ordinal =1)
    private Date currentDate;

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FastJson详解
FastJson 是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
Java微观世界
2025/01/21
3350
Fastjson 使用
fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean序列化为JSON字符串,也可以从 JSON 字符串反序列化到 JavaBean。
acc8226
2022/05/17
2.1K0
fastJson的JSONField注解
然后是deserialize:默认为true,如果为false,反序列化时会忽略该属性
阿超
2022/08/16
1.6K0
fastJson的JSONField注解
FastJson基本使用
5、注解属性 : deserialize 指定是否反序列化该字段,默认为 true
兮动人
2022/09/26
8730
用了几年的 Fastjson,最终替换成了 Jackson!
> 公众号:[Java小咖秀](https://t.1yb.co/jwkk),网站:[javaxks.com](https://www.javaxks.com)
Java小咖秀
2021/05/06
2.5K0
jsonfield注解不生效(write javabean error fastjson)
@jsonfield作用在field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
全栈程序员站长
2022/08/01
7K0
fastjson详解
  fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
良辰美景TT
2018/09/11
3.5K0
fastjson详解
SpringBoot - FastJson
​ fastjson提供了JSONField对序列化与反序列化进行定制,比如可以指定字段的名称,序列化的顺序。JSONField用于属性,方法方法参数上。JSONField的源码如下:
郭顺发
2021/12/17
1.9K0
json字符串忽略null,忽略字段,首字母大写等gson,jackson,fastJson实现demo,T data JSON.parseObject json转换
json字符串忽略null,忽略字段,首字母大写等gson,jackson,fastJson实现demo
oktokeep
2024/10/09
2820
FastJson 笔记
观察该类的继承与实现关系,不难发现,JSONObject 实现了 Map 接口,而 json 对象中的数据都是以”键:值”对形式出现,可以猜想, JSONObject 底层操作是由Map实现的。
Remember_Ray
2020/03/09
4.6K0
用了几年的 Fastjson,我最终替换成了Jackson!
作者:larva-zhh 来源:www.cnblogs.com/larva-zhh/p/11544317.html
Java技术栈
2021/05/11
6K0
走进Java接口测试之fastjson指南
在上文 走进Java接口测试之理解JSON和XML基础 我们介绍了 JSON 的基础知识,本文我们深入研究阿里巴巴的开源 JSON 解析库 fastjson。
高楼Zee
2019/07/17
1.5K0
吃透FastJSON,认准此文!
大家好,我是小菜,一个渴望在互联网行业做到蔡不菜的小菜。可柔可刚,点赞则柔,白嫖则刚!死鬼~看完记得给我来个三连哦!
蔡不菜丶
2021/02/08
1.1K0
阿里fastjson框架基础
fastjson 是阿里巴巴公司开源的一个json序列化、反序列化轻量级框架,号称最快。 是因为其内置算法的增强,以及序列化时对class进行了细节的微妙处理,更多细节请查看其项目源码:https://github.com/alibaba/fastjson 常用方法示例:
青山师
2023/05/05
3120
FastJson的使用
FastJson 的Wiki在这里:https://github.com/alibaba/fastjson/wiki/
bear_fish
2018/09/19
1.6K0
fastjson 笔记
demo/fastjson at master · suveng/demo · GitHub
suveng
2019/11/12
1.6K0
fastjson:差点被几个漏洞毁了一世英名
我是 fastjson,是个地地道道的杭州土著,但我始终怀揣着一颗走向全世界的雄心。这不,我在 GitHub 上的简介都换成了英文,国际范十足吧?
沉默王二
2020/12/29
6740
fastjson:差点被几个漏洞毁了一世英名
Java几种常用JSON库性能比较
本文通过JMH(即JavaMicrobenchmarkHarness,基于方法层面的基准测试,精网络
Java架构师必看
2021/07/15
5K0
Java几种常用JSON库性能比较
使用com.fasterxml.jackson.annotation的注解
是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
用户4396583
2024/08/01
9860
Mson,让JSON序列化更快
本文由秦喆 芝任 天洲 赵鹏四位作者共同完成。 问题 我们经常需要在主线程中读取一些配置文件或者缓存数据,最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来,这种方式特别简单而且可以
美团技术团队
2018/03/13
2.1K0
Mson,让JSON序列化更快
相关推荐
FastJson详解
更多 >
LV.0
这个人很懒,什么都没有留下~
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验