com.alibaba.fastjson将对象转为JSON字符串出现首字母小写的解决方法

问题简单描述:使用fastjhson将对象转为json字符串出现key首字母小写的问题

情景再现:

//想要转为json的对象object 
Object object = sqlSession.selectOne(mapperType, obj);
//中间其他步骤省略...
//对象转json字符串
String jsonStr = JSON.toJSONString(object);

转完后的输入结果如下:

{
	"nAME": "dailix",
	"pASSWORD": "dbbfc6985712113e43c10a1d069260d19a1c117f",
	"page": {
		"currentPage": 0,
		"currentResult": 0,
		"entityOrField": false,
		"pageStr": "",
		"pd": {},
		"showCount": 15,
		"totalPage": 0,
		"totalResult": 0
	},
	"rOLE_IDS": "",
	"role": {
		"rIGHTS": "686472012592423468028657882539078621399219175426",
		"rOLE_ID": "3",
		"rOLE_NAME": "一级代理"
	},
	"sKIN": "default",
	"uSERNAME": "dailix",
	"uSER_ID": "30000"
}

从上述输出结果可以的发现,JSON字符串key的首字母出现小写问题,我们期望是大写但是fastJson将key首字母自动变成小写,导致其他处理报错。

解决方案:

1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property

2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态块中直接改变TypeUtils的变量值, 如果用Spring的话可以使用InitializingBean进行处理

​​​​​​​​​​​​​​TypeUtils.compatibleWithJavaBean = true;

3. 此变量是public的注意要在一个地方进行改动, 避免线程安全问题

参考文章

 

你可能感兴趣的:(java)