反序列化包含杰克逊点的属性文件

时间:2018-02-19 18:10:16

标签: java json jackson2

在我们的应用程序中,我们尝试使用Jackson读取平面属性文件,以使属性与我们的POJO相匹配 一切正常,但当属性名称包含一些点时,wholo POJO设置为null

以下是属性文件的示例

textViews

这是我的POJO

p.test=Just a test

以下是我如何映射

public class BasicPOJO {

  @JsonProperty("p.test")
  private String test;

  public String getTest() {
    return test;
  }

  public void setTest(String test) {
    this.test = test;
  }
}

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

Dot in属性名称用于表示嵌套对象。 这在这里描述 https://github.com/FasterXML/jackson-dataformats-text/blob/master/properties/README.md#basics-of-conversion

  

由于默认的java.util.Properties可以读取“flat”键/值条目,这里有什么大不了的?

     

大多数属性文件实际上使用命名约定来使用隐含结构;最常见的是使用句点('。')作为逻辑路径分隔符。

您可以使用https://github.com/FasterXML/jackson-dataformats-text/blob/master/properties/README.md#javapropsschemapathseparator

中所述的JavaPropsSchema.withoutPathSeparator()停用它
JavaPropsSchema schema = JavaPropsSchema.emptySchema()
    .withoutPathSeparator();
BasicPOJO myProperties = mapper.readerFor(BasicPOJO.class)
    .with(schema)
    .readValue(source);