Jackson将POJO序列化为JS对象

时间:2019-03-28 19:52:59

标签: java jackson objectmapper

class Foo {
  String name = "Bar";
}

使用ObjectMapper().convertValue(foo, JsonNode::class)序列化上述对象将返回JSON对象,如下所示:

{
  "name": "Bar"
}

我想要的结果是:

{
  name: "Bar"
}  

我尝试了一个自定义序列化程序,但它始终将密钥写为字符串。有没有一种方法可以使用Jackson或其中的任何注释以这种格式序列化我的POJO,以避免替换字符或构建我自己的字符串。

1 个答案:

答案 0 :(得分:1)

除了您的“ JSON”不再有效之外,您还可以在JsonGenerator.Feature.QUOTE_FIELD_NAMES中禁用ObjectMapper

ObjectMapper mapper = new ObjectMapper()
        .disable(JsonGenerator.Feature.QUOTE_FIELD_NAMES);

mapper.writeValueAsString(new Foo())的结果将是:

{name:"Bar"}

要启用漂亮打印,您可以使用以下任一方法:

ObjectMapper mapper = new ObjectMapper()
        .disable(JsonGenerator.Feature.QUOTE_FIELD_NAMES)
        .enable(SerializationFeature.INDENT_OUTPUT);

或者在输出步骤中使用它:

String result = mapper
        .writerWithDefaultPrettyPrinter()
        .writeValueAsString(new Foo());

两种情况下的结果均为:

{
  name : "Bar"
}