zoukankan      html  css  js  c++  java
  • 关于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":"金陵"}

    ~

  • 相关阅读:
    玩转手工测试之客户端产品手工测试提效实践
    接口测试常用工具及测试方法(新手篇)
    我北漂 7 年,再也不打工了!
    测试人如何高效地设计自动化测试框架?
    你这样,测试人员不能活了。。。
    如何优雅地记录操作日志?
    C#String.IndexOf检索字符串中字符出现的次数
    C#基础之数组
    C#基础之is,as关键字
    C#委托与事件
  • 原文地址:https://www.cnblogs.com/hans_gis/p/6874446.html
Copyright © 2011-2022 走看看