一.定位问题
-
按f12查看请求包,status为500说明为服务端错误。
-
在编译器中查看,fastjson报错。
-
在servlet中只有序列化(java对象转json字符串)时用到了fastjson。
二.分析问题
引入:JavaBean 应该实现 Serializable
接口,以便其状态可以在网络上传输或持久化到磁盘。进一步证明,序列化出错。
write javaBean error, fastjson version 1.2.62, class com.itheima.pojo.Brand, fieldName : 8
翻译:JavaBean出错,JavaBean实现的fastjson版本为1.2.62,Brand,字段名 : 8
3个逗号,层层定位,最终定位到字段8。众所周知字段的概念通常在数据库中出现,打开数据库发现第8行的字段为null。然而在序列化时默认是不支持字段为空的。
三.解决方法
-
手动修改含有null值的列。
-
在序列化时,设置:序列化特性.忽略非字段的获取(SerializerFeature.IgnoreNonFieldGetter)
//加工为json 序列化
String jsonString = JSON.toJSONString(brands, SerializerFeature.IgnoreNonFieldGetter);