一个经典的fastjson反序列化问题记录

一个经典的fastjson反序列化问题记录

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

最近遇到一个问题,排查时走了一段歧路。报错信息是com.alibaba.fastjson.JSONException: scan null error。问题出在map中出现了null作为key的数据,以及key是复杂对象。在反序列化时出现异常。

🎯

关键要点

  • 遇到的问题是com.alibaba.fastjson.JSONException: scan null error。

  • 问题源于map中出现了null作为key的数据,以及key是复杂对象。

  • 定义了一个枚举类DemoEnum,包含code和desc字段。

  • 创建了一个FastJsonDemo类,包含name字段和一个Map类型的map。

  • 在main方法中进行FastJsonDemo的序列化和反序列化。

  • 在map中使用了null作为key,导致反序列化时出现异常。

  • 异常的原因包括map中存在null作为key和key是复杂对象。

  • 最初的异常是由于修改了另一个字符串字段,导致反序列化时出现误差。

延伸问答

fastjson反序列化时常见的错误是什么?

常见的错误是com.alibaba.fastjson.JSONException: scan null error。

导致fastjson反序列化异常的原因有哪些?

异常的原因包括map中存在null作为key和key是复杂对象。

如何定义一个包含map的FastJsonDemo类?

FastJsonDemo类包含name字段和一个Map类型的map,key为DemoEnum类型。

在fastjson中如何处理枚举类型作为map的key?

可以使用定义的枚举类作为map的key,但需确保key不为null。

在反序列化时如何避免出现null key的错误?

确保在map中不使用null作为key,且key应为简单对象。

fastjson反序列化时如何调试错误?

可以通过检查map中的key和相关字段的值来调试反序列化错误。

🏷️

标签

➡️

继续阅读