杰克逊将Java String表示为Json数字或字符串

时间:2017-10-20 13:45:38

标签: java json serialization jackson2

我有以下java类,例如Employee

class Employee{
      String empId; 
}

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

{
 "empId":"123"
}

如果emp Id纯粹是数字,例如123

,我需要的是以下输出
{
 "empId":123
}

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

{
 "empId":"A123"
}

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

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

请告诉我您的建议。

1 个答案:

答案 0 :(得分:0)

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

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

您如何看待任何客户可以区分“empId”字段的值类型?

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

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