fastjson2使用Feature.WriteBooleanAsNumber踩坑
创始人
2025-05-28 21:40:52
0

fastjson2 是 FASTJSON 项目的重要升级,目标是为下一个十年提供一个高性能的JSON库, fastjson2 性能相比原先旧的 fastjson 有了很大提升,并且 fastjson2 更安全,完全删除autoType白名单,提升了安全性。
地址: https://github.com/alibaba/fastjson2
添加依赖:

dependencies {implementation 'com.alibaba.fastjson2:fastjson2:2.0.25'
}

以下是一组性能对比数据:

// ecs.c7.xlarge-oracle-jdk1.8.0_341_x64fastjson2 > fastjson1 > jackson > gson
jdk8  100%        76.07%      39.15%    33.18%
jdk11 100%        73.15%      39.20%    34.59%
jdk17 100%        91.18%      35.55%    33.98%
jdk18 100%        85.52%      36.21%    28.54%
jdk19 100%        86.91%      37.48%    29.09%

但在用的过程中还是遇到了一些坑,记录如下:
Feature.WriteBooleanAsNumber 通过字面意思为为true的序列化成1,为false的值序列化成0,
但 通过

JSON.toJSONString(message, Feature.WriteBooleanAsNumber);

或者通过如下方式

  @JSONField(serializeFeatures = Feature.WriteBooleanAsNumber)private boolean human;public boolean isHuman() {return human;}public void setHuman(boolean human) {this.human = human;}

都无效生成的结果还是true 或者false,

那么,是否是isHuman出了问题呢,于是把isHuman改成getHuman,

  @JSONField(serializeFeatures = Feature.WriteBooleanAsNumber)private boolean human;public boolean getHuman() {return human;}public void setHuman(boolean human) {this.human = human;}

发现结果还是不对.

会不会是包装类和基本类型的问题呢,于是改成如下:

    @JSONField(serializeFeatures = Feature.WriteBooleanAsNumber)private Boolean human;public Boolean getHuman() {return human;}public void setHuman(Boolean human) {this.human = human;}

再次通过JSON.toJSONString(message); 发现还是无效,于是改成

    private Boolean human;public Boolean getHuman() {return human;}public void setHuman(Boolean human) {this.human = human;}

JSON.toJSONString(message, Feature.WriteBooleanAsNumber); 结果符合预期:{“human”:1}

这里有两个问题:
1:为什么基本类型不给支持?
2:为什么通过@JSONField(serializeFeatures = Feature.WriteBooleanAsNumber) 这种方式就不行?

顺手提了个issue给官方:
https://github.com/alibaba/fastjson2/issues/1241

相关内容

热门资讯

石大胜华:拟申请发行H股并在香... 新京报贝壳财经讯 12月23日,石大胜华发布公告称,公司于2025年12月23日召开董事会,审议通过...
我国渤海发现第7个亿吨级油田 人民网北京12月24日电 (记者杜燕飞)中国海油24日发布消息,我国渤海海域新近系浅层再获亿吨级发现...
永鼎股份:押注光通信+可控核聚... 依托传统线缆业务的积累,永鼎股份(600105.SH)近年将发展重心向高增长赛道倾斜,全力推进光芯片...
西圈东融:成都都市圈牵手长三角... 01 战略契合:东西增长极的双向赋能当承载着2.98万亿元经济体量的成都都市圈,在长三角核心城市上海...
年内屡创新高!详解年末强势投资... 近一个月来,卫星产业延续强势表现,已超越机器人成为当前市场关注度颇高的主题板块。12月22日,跟踪中...
多股晋级三连板,这一板块再度走... 12月24日,福建本地股盘中持续走强,板块内多股涨停。安记食品、合兴包装、安通控股均走出3连板行情,...
三大业务被叫停、5名高管遭禁业... 作者 | 郑理来源 | 独角金融作为国内首批互联网保险公司之一,安心财产保险有限责任公司(下称“安心...
利比亚军队总参谋长,在结束出访... 据新华社,利比亚军队总参谋长穆罕默德·阿里·艾哈迈德·哈达德23日结束对土耳其的正式访问后,于回国途...
深圳进步最快的区,是它! 近日,在“‘十四五’广东成就”深圳专场新闻发布会上,深圳多项指标跃居全国城市第一,高质量发展成绩单“...
A股高开,有色金属板块持续走强... 2025.12.24本文字数:547,阅读时长大约1分钟作者 |一财阿驴09:29有色金属板块连日走...