前言:
fastjson由于高性能与简洁的API,受到了国内用户的欢迎,但是如果你碰到一个特殊的场景:java对象转String字符串时如何对象的字段首字母的大写会自动转成小写,这个设计本身没有什么问题,但是由于业务的情况不一样,通常需要就需要原始的field,不需要大小写,本人就是因为第三方接口的首字母必须是大写才遇到了这种情况,下面来说说解决方案。
解决方案
方案一:
在getting方法中使用注解 @JSONField(name="YouName")
适合场景:一个对象的只有少部分字段field有大写开头的情况,如果所有的字段都是大写开头,你要让我一个一个添加吗?开什么玩笑,看下面
方案二:
将java对象的Field变成public,public String name;
合适场景:所有的字段field都是大写开头,对java规范没有太强制的要求,自己心理能接受(本人就接受不了)。接受不了继续看下面
方案三:
使用fastjson转String方式改变:String str=JSON.toJSONString(object,new PascalNameFilter());
合适场景:所有字段field都是大写开头,对java规范有高要求。由于这种方式是强制将首字母大写,如果你首字母是小写的也会变成大小。如果你的对象中有一部分是大写开头,有一部分是小写开头,并且比例不固定,那你惨了,是不是要骂奇葩业务了。(本人就采用这种方式,在创建对象的时候依然可以小写开头,既符合java规范邮解决了实际业务,强迫症福音)
方案四:
如果你的业务确实奇葩,存在方案三中的问题,那推荐你换一个JSON序列化工具吧,不要犹豫了,何必在一棵树上吊死,比如:google的GSON,cn.hutool.json中的JSONUtil.toJsonStr(object);
相信以上答案应该能解决大部分的业务问题了,如果有更好的解决方式,欢迎大家交流。