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":"金陵"}

    ~

  • 相关阅读:
    json针对list map set 应用
    数据转换与枚举
    override和overload的区别
    JAVA NIO 基础学习
    JavaScript ES6箭头函数指南
    Javascript 中的神器
    如何编写Hexo主题
    什么是闭包?闭包的优缺点?
    微信小程序封装http访问网络库实例代码
    微信小程序 生命周期函数详解
  • 原文地址:https://www.cnblogs.com/hans_gis/p/6874446.html
Copyright © 2011-2022 走看看