Jackson 将 Java 字符串表示为 Json 数字或字符串



我有以下java类,例如员工

class Employee{
      String empId; 
}

当我使用 Jackson Object Mapper 序列化此 java 类时,如果员工 ID 为 123,则我得到示例 Json 输出。

{
 "empId":"123"
}

我需要的是下面的输出,如果 emp Id 纯粹是一个数字,例如 123

{
 "empId":123
}

并且,如果员工 ID 是"A123"

{
 "empId":"A123"
}

我可以编写一个自定义序列化程序类并使用自定义序列化程序注释 empId,但是在包含许多对象的大型代码库上执行此操作是一个乏味的过程。

杰克逊是否带有任何开箱即用的功能来检查字符串是否为数字,然后将其表示为数字,或者在序列化过程中将其表示为字符串,类似于将数字写入字符串功能。

请让我知道您的建议。

你的例子在基础知识上是错误的。

您尝试针对数据类型的主体。

您认为任何客户端如何区分字段"empId"的值类型?

必须具有一种类型 - 字符串或数字。时期。

否则,对于客户端解析器来说,这将是很大的痛苦。当一个实例的相同字段是字符串,而另一个实例的字段是数字时,无法解析相同的 JSON 结构。

最新更新