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

~

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

  1. Newtonsoft.Json输出JSON 时动态忽略属性

    一,前言 最近做项目采用Json形式和其他客户端交互,借助于Newtonsoft.Json . 由于业务场景不同,输出的Json内容也不同.要想忽略的属性,可以借助Newtonsoft.Json的特性 ...

  2. Newtonsoft.Json输出Json时动态忽略属性

    一,前言 最近做项目采用Json形式和其他客户端交互,借助于Newtonsoft.Json . 由于业务场景不同,输出的Json内容也不同.要想忽略的属性,可以借助Newtonsoft.Json的特性 ...

  3. EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法

    最近的项目采用的是 ASP.NET mvc 4.0 + entity framework 5.0 ,后台以JSON形式抛出数据是借助于Newtonsoft.Json ,   要想忽略的属性前面添加特性 ...

  4. json转换对象 对象属性首字母为大写会出错 可以用以下方法

    package open_exe; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.u ...

  5. FastJson生成json时,显示Null属性

    FastJson生成json时,默认不会输出null字段. 移动端,有时候,需要后端提供完整的字段说明. Map < String , Object > jsonMap = new Has ...

  6. Laravel输出JSON时设定输出字段的几种情况总结

    1.如果输出json的时候需要屏蔽某些字段,或则想自定义显示的字段: 1.model里面设置 protected $hidden = ['password'];//要屏蔽的字段 2.model里面设置 ...

  7. 当使用servlet输出json时,浏览器端jquery的ajax遇到parse error的问题

    在使用jquery的ajax进行请求发送并由服务端的servlet返回json格式的数据内容时,假设输出内容没有正确设置,会遇到client浏览器报告parse error的问题.这个问题的解决仅仅须 ...

  8. json转bean对象

    一下为个人收藏,以便下次使用. 前端传的json格式为: [{"suppliercode":"gylhld_gycqlt3_gycqlt1","pro ...

  9. fastjson转换对象,属性首字母大小写的问题

    请求Json数据的时候,传递过去的String类型转Json数据的时候经常有首字母是大写的情况,例如"LoginAccount":"02:00:00:62:73:74&q ...

随机推荐

  1. Bootstrap-Plugin:提示工具(Tooltip)插件

    ylbtech-Bootstrap-Plugin:提示工具(Tooltip)插件 1.返回顶部 1. Bootstrap 提示工具(Tooltip)插件 当您想要描述一个链接的时候,提示工具(Tool ...

  2. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #6 使用localmodconfig缩短编译时间

    HACK #6 使用localmodconfig缩短编译时间 本节介绍使用make localmodconfig生成精简的.config文件,缩短内核编译时间的方法.为了能够应对各种各样的环境,发布版 ...

  3. vconsole使用

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. django-渲染页面+locals

    from django.shortcuts import render, redirect from django.views import View from django.http import ...

  5. Pthreads 《并行程序设计导论》的补充代码

    ▶ 关于单链表的访问,插入结点和删除结点操作,并且将其推广到多线程中去. ● 代码,通用的随机数生成 // my_rand.h #ifndef _MY_RAND_H_ #define _MY_RAND ...

  6. 【CentOS 6.5】【转】新版本linux生成xorg.conf

    新版本的linux如何生成xorg.conf 较新版本的linux系统都已经没有xorg.conf文件,但是有时候为了对显示做微调或为了支持多屏显示等原因,还需要手工生成一个xorg.conf,然后根 ...

  7. c++ new 与malloc有什么区别

    前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答new从自由存储区上分配内存,malloc从堆上分配内存:new/de ...

  8. 2.ehcache.xml简介

    转自:https://www.cnblogs.com/crazylqy/p/4238148.html ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheMa ...

  9. springboot 中 集成druid ,redis

    1,导入druid jar包 <!--引入drud--> <dependency> <groupId>com.alibaba</groupId> < ...

  10. TI davinci DM6467通过串口0将UBL和u-boot写入NAND flash

    TI的davinci系列一般支持好几种启动模式,如下图TMS320DM6467的datasheet可以查到所有的BOOTMODE LVS301和LW9226的开发板上有一个选择bootmode的拨码开 ...