spring JSON 序列化:Long 转 String
在 RESTful API 开发中,有时需要将 Java 对象序列化为 json 字符串。其中,对于 Long 类型的数据,通常需要将其转换为 String 类型才能在前端正确显示或处理。
问题:如何让 RESTController 和 Feign 接口序列化 Long 类型数据
在 Spring 项目中,可以通过以下步骤控制 Long 类型的序列化行为:
-
配置 Feign 的 Encoder:
- 定义一个 Feign 配置类,实现 Encoder 接口。
- 重写 encode 方法,并使用 MappingJackson2httpMessageConverter 作为 HTTP 消息转换器。
-
配置 ObjectMapper:
- 在 Feign 配置类中,创建并配置一个 ObjectMapper,并将其设置为 MappingJackson2HttpMessageConverter 的消息转换器。
- 在 ObjectMapper 中,设置 SerializationFeature.WRITE_BIGDECIMAL_AS_PLaiN 和 SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS 属性为 false。这样可以确保 Long 类型数据以 String 形式序列化。
通过上述配置,即可控制 RESTController 和 Feign 接口的序列化行为。其中,对 Feign 接口的配置可以防止内部服务之间接口调用时发生 Long 转 String 的序列化。