关于fastjson的一个坑:输出json时,bean对象属性首字母默认被小写

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴。  

主要特点:  

  1. 快速FAST: 比其它任何基于Java的解析器和生成器更快,包括jackson 
  2. 强大:支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum
  3. 零依赖:没有依赖其它任何类库除了JDK

强大的fastjson,依然留下了一个坑,先看代码示例:

public class STB {
    
    private java.lang.String STCD;
    
    private java.lang.String STNM;
    
    public java.lang.String getSTCD() {
        return this.STCD;
    }
    public void setSTCD(java.lang.String STCD) {
        this.STCD=STCD;
    }

    public java.lang.String getSTNM() {
        return this.STNM;
    }
    public void setSTNM(java.lang.String STNM) {
        this.STNM=STNM;
    }

}

输出

{"sTCD":"as001","sTNM":"金陵"}

fastjson留下的坑:Bean对象的属性字段首字母默认被转成了小写形式 解决办法有两种。

解决办法一:在Bean实体的get方法上添加注解@JSONField(name = "XXX"),修改STB的代码如下:

public class STB {
    
    private java.lang.String STCD;
    
    private java.lang.String STNM;
    
    @JSONField(name = "STCD")
    public java.lang.String getSTCD() {
        return this.STCD;
    }
    public void setSTCD(java.lang.String STCD) {
        this.STCD=STCD;
    }

    @JSONField(name = "STNM")
    public java.lang.String getSTNM() {
        return this.STNM;
    }
    public void setSTNM(java.lang.String STNM) {
        this.STNM=STNM;
    }

}

输出:

{"STCD":"as001","STNM":"金陵"}

解决办法二:对fastjson进行设置,指定compatibleWithJavaBean为true,修改main方法如下:

    public static void main(String[] args)
    {
        STB stb = new STB();
        stb.setSTCD("as001");
        stb.setSTNM("金陵");
        
        TypeUtils.compatibleWithJavaBean = true;
        String jsonString = JSON.toJSONString(stb); 
        System.out.println(jsonString);
    }

输出:

{"STCD":"as001","STNM":"金陵"}

~

 

转载于:https://www.cnblogs.com/hans_gis/p/6874446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值