Jackson 将 POJO 序列化为 JS 对象
Jackson serialize POJO to JS Object
class Foo {
String name = "Bar";
}
使用 ObjectMapper().convertValue(foo, JsonNode::class)
序列化上述对象将 return JSON 对象为:
{
"name": "Bar"
}
然而我想要的结果是:
{
name: "Bar"
}
我试过自定义序列化程序,但它总是将键写入字符串。有没有办法使用 Jackson 或它的任何注释以这种格式序列化我的 POJO,以避免替换字符或构建我自己的字符串。
除了您的 "JSON" 将不再有效之外,您还可以在 ObjectMapper
.
中禁用 JsonGenerator.Feature.QUOTE_FIELD_NAMES
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"
}
class Foo {
String name = "Bar";
}
使用 ObjectMapper().convertValue(foo, JsonNode::class)
序列化上述对象将 return JSON 对象为:
{
"name": "Bar"
}
然而我想要的结果是:
{
name: "Bar"
}
我试过自定义序列化程序,但它总是将键写入字符串。有没有办法使用 Jackson 或它的任何注释以这种格式序列化我的 POJO,以避免替换字符或构建我自己的字符串。
除了您的 "JSON" 将不再有效之外,您还可以在 ObjectMapper
.
JsonGenerator.Feature.QUOTE_FIELD_NAMES
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"
}