当前位置: 首页 > 知识库问答 >
问题:

向POJO添加get-method会导致JsonMapping异常

阎单鹗
2023-03-14

我有一个POJO类,用于使用Jackson进行反序列化。这个类包含所有类变量的默认构造函数、getter和setter方法<因为我需要一些关于POJO内容的高级逻辑,所以我添加了一个方法

public String getRootModuleName()

但现在,我的单元测试在反序列化过程中失败,只有以下例外:

com.fasterxml.jackson.databind.JsonMappingException: No value present (through reference chain: com.POJO["rootModuleName"])

在我看来,Jackson似乎识别了一个get方法,并由此推断出,反序列化必须有一个类似的JSON属性
当我用@JsonIgnore注释方法时,测试成功了。

有人能确认Jackson通过方法名上的get prefix来识别所需的属性吗
是@JsonIgnore是一个好的解决方案,还是应该将业务逻辑与POJO设计分离?

共有1个答案

洪璞瑜
2023-03-14

你完全正确,JSON Jackson通过“get”前缀识别属性getter。因此,在您的情况下,可能的解决方案是像您那样使用@JsonIgnore,或者重命名您的方法,使其具有不同的前缀,例如“retrieve”、“extract”等等。我认为使用@JsonIgnore是最好的方法。总之,你的解决方案是正确的

 类似资料:
  • 我试图将动态元素添加到div中。Div有,但是如果添加到Div中的内容会被缩放,但也会被推送。 导致这一问题:如果数据很大,则“在小数据上更正一个”问题 我在网上试了很多东西,但我找不到任何关于这方面的信息。

  • 这将导致以下生成错误: TaskExecutionException:任务“:App:TransformResourcesWithMergeJavaResforDebug”执行失败。在org.gradle.api.internal.tasks.execution.executeActionStaskExecuter.java:103),在org.gradle.api.internal.tasks.

  • 所以这个问题要求打印出在一个mxn网格中从(1,1)到(M,N)的所有路径,以及相同路径的总数。 把M和N都作为输入。M和N是矩形板上的行数和列数。我们的球员从左上角开始,必须到达右下角。在一次移动中,玩家可以水平移动一步(右)或垂直移动一步(下)或斜向移动一步(东南)。 > 编写一个递归函数,返回玩家可以跨板旅行的不同方式的计数。打印返回的值。 编写一个递归函数,打印所有有效路径的移动(void

  • 问题内容: 我想我发现了一个错误。也许不是,但是Super CSV不能很好地处理。 我正在使用MapReader解析具有41列的CSV文件。但是,我得到的是CSV- 而使我获得CSV的Web服务错了一行。“标题”行是制表符分隔的行,具有41个单元格。 而且“错误的行”是一个由制表符分隔的行,其中包含36个单元格,其内容没有任何意义。 这是我正在使用的代码: 我在上面提到的行中执行mapReader

  • 某些 HTTP 代理不支持任意的 HTTP 方法或更新的 HTTP 方法(比如 PATCH)。 这种情况下,通过另一种完全违背协议的 HTTP 方法来“代理” HTTP 方法是可行 的。 这个方法使客户端发出 HTTP POST 请求并设置 X-HTTP-Method-Override 标头的值为想要的 HTTP 方法(比如 PATCH )。 这很容易通过一个 HTTP 中间件来完成: class

  • 我有一个以编程方式定义的UISegmentedControl。 我正在尝试添加一个布局约束,以便在我的iPad旋转时,分段控件在旋转视图中的大小正确,而不是溢出屏幕。 我应用以下约束: 我的UIsegmentControl定义如下: 我没有出错,但是在运行时,我的分段控件消失了。不确定我在这里错过了什么,因为我过去只在故事板中做过自动布局。 我只想能够调整分段控件的宽度,所以我假设我只需要一个布局