fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴。
主要特点:
- 快速FAST: 比其它任何基于Java的解析器和生成器更快,包括jackson
- 强大:支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum
- 零依赖:没有依赖其它任何类库除了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":"金陵"}
~