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

相关内容

热门资讯

黑科技辅助器!天天象棋(辅助器... 您好,天天象棋这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款...
黑科技外挂!狂飙娱乐(外挂),... 黑科技外挂!狂飙娱乐(外挂),懒人娱乐确实是真的有透视挂工具(有辅助挂app)1、这是跨平台的懒人娱...
黑科技辅助!今日长牌(辅助),... 黑科技辅助!今日长牌(辅助),哥哥跑得快本来存在有透视挂方法(真实有辅助挂)1、哥哥跑得快有没有辅助...
黑科技透视挂!BOB(透视挂)... 黑科技透视挂!BOB(透视挂),旺旺福建麻将一贯是真的有透视挂插件(确实有辅助挂);1、首先打开旺旺...
黑科技开挂!中至上饶麻将510... 黑科技开挂!中至上饶麻将510k(开挂),jjgame总是真的有透视挂脚本(有辅助挂秘笈)1、中至上...
黑科技作弊器!悠闲娱乐(作弊器... 黑科技作弊器!悠闲娱乐(作弊器),池州辣子竟然有透视挂技巧(有辅助挂讲解)1、打开软件启动之后找到中...
黑科技外挂!跑胡子(外挂),乐... 黑科技外挂!跑胡子(外挂),乐天棋牌都是真的有透视挂脚本(有辅助挂辅教程)1、让任何用户在无需乐天棋...
黑科技透视挂!卓越棋牌(透视挂... 黑科技透视挂!卓越棋牌(透视挂),微乐捉老麻子其实真的是有透视挂插件(详细教程辅助)该软件可以轻松地...
黑科技辅助!乐酷大厅(辅助),... 黑科技辅助!乐酷大厅(辅助),新火神大厅一贯真的是有透视挂插件(有辅助挂透视)1、新火神大厅辅助软件...
黑科技辅助器!心悦吉林麻(辅助... 黑科技辅助器!心悦吉林麻(辅助器),绿色棋游好像真的是有透视挂攻略(有辅助挂方略)在进入心悦吉林麻软...