Java坑 之 JSON序列化
Posted 非驴非码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java坑 之 JSON序列化相关的知识,希望对你有一定的参考价值。
背景
JAVA Web 开发中前后端常常以对象序列化为Json格式传输数据,一般我们会只期望对象的成员变量被序列化。
坑
abstract public class TaskBase {
private String assetId;
abstract public String getUrlParameters();
如上,我们定义了一个虚拟方法getUrlParameters,返回一个String类型,当该抽象类的子类实现该方法后,被序列化的子类对象将会出现一个urlParameters的key,但我们的代码是没有定义urlParameters成员的。
{
"assetId": "CA2914F46A08433FBF52E940FEAD9805",
"urlParameters": "dataPointId1",
}
原因
原来在后端把对象以ResponseBody返回给前端时,会调用默认序列化方法,而该方法采用的是Jackson做为Json序列化类,该Jackson会先利用反射找到对象类的所有get方法,并把get字符串去掉,小写剩余字符串的头字母作为json的每个key值,而get方法的返回值作为value。然后再反射成员变量,添加到json中。类似的处理方式还有fastjson。
解决方案
1. 修改方法名getXXX成fetchXXX
2. 利用 google提供的Gson对对象进行转换
后感
Java完美的封装让软件的开发效率得到大大的提高,相比C/C++,让入门门槛更低。但一个好的码工不仅仅是需要利用其便利之处,也应深入了解其原理,前者利于公司,后者利于个人,把握好平衡。
以上是关于Java坑 之 JSON序列化的主要内容,如果未能解决你的问题,请参考以下文章