当前位置: 首页 > 面试题库 >

杰克逊-必需的财产吗?

李谦
2023-03-14
问题内容

我在对象映射器上使用Jackson的readValue()方法从JSON文件读取并将其转换为我的Java对象。

例如。

mapperObject.readValue( node, MyTargetClass.class )

我可以在MyTargetClass上设置任何注释以强制执行必需的属性吗?例如,如果我有一个具有ABC,DEF和GHI属性的JSON对象,而我的Json是以下内容

{
  "ABC" : "somevalue"
  "DEF" : "someothervalue" 
}

我希望它以某种方式失败,并且仅在readValue包含ABC,DEF和GHI时才能成功。


问题答案:

Jackson不包括验证功能,这是设计使然(即认为超出范围)。但是通常使用的是Bean验证API实现。这样做的好处是数据格式处理和验证逻辑之间的分离。这就是DropWizard之类的框架所使用的;这就是JAX-
RS(例如Jersey)向JAX-RS 2.0迈进的方向。



 类似资料:
  • 我在对象映射器上使用Jackson的readValue()方法从JSON文件中读取并将其转换为我的java对象。 如。 我可以在MyTargetClass上设置任何注释来强制执行所需的属性吗?例如,如果我有一个属性为ABC、DEF和GHI的JSON对象,我的JSON如下 我希望它以某种方式失败,并且只有在readValue上成功,如果它包含ABC、DEF和GHI。

  • 问题内容: 我正在使用Jackson从JSON创建Java对象。假设我有一个像这样的JSON字符串: 和这样的pojo: 因此,c显然是未知的属性-它将被排除在外。我想知道,有什么办法可以记录c未知和被忽略的情况? 问题答案: 我不知道有任何内置工具可以做到这一点。您可以用 标记注释,可用于定义一个非静态的,两个参数的方法(属性的第一个参数名称,第二个要设置的值),用作从JSON内容中找到的所有其

  • 我目前正在尝试使用能够处理多态性的jackson实现反序列化程序,也就是说,给定这两个类: 反序列化器应该能够从json字符串推断和实例化正确的子类。 我使用自定义解串器模块,即唯一属性多态态序列化器(从 https://gist.github.com/robinhowlett/ce45e575197060b8392d)。此模块的配置如下: 该模块向用户询问动物的每个子类的唯一属性。因此,当反序列

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 问题内容: 在Jersey上使用Jackson 处理器时,何时以及为何需要在两者之间使用注释? 杰克逊(Jackson)还提供了自己的服务提供商以直接使用。这种方法缺少什么?还是为什么我比其他人更喜欢 ps:我也用弹簧 问题答案: 为了生成JSON,通常只需指定即可。但是,这将默认采用JAXB路由。 使用Object-> JAXB-> JSON,您必须注释要映射的类。这可以很好地工作,但是一旦您要

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A