java - Jackson 将 POJO 序列化为 JS 对象
问题描述
class Foo {
String name = "Bar";
}
使用序列化上述对象ObjectMapper().convertValue(foo, JsonNode::class)
将返回 JSON 对象:
{
"name": "Bar"
}
然而,我想要的结果是:
{
name: "Bar"
}
我尝试了一个自定义序列化程序,但它总是将键写为字符串。有没有办法使用 Jackson 或它的任何注释以这种格式序列化我的 POJO,以避免替换字符或构建我自己的字符串。
解决方案
除了您的“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"
}
推荐阅读
- javascript - 如何在 NodeJS 中传递命令行参数?
- php - 使用重力形式的 WordPress 婚礼 RSVP
- angular - 有没有办法以声明方式翻译模板中的插值?
- c++ - 使用 glDrawPixels() 在 OpenGL 上绘制一个像素
- python - 使用 setup.py 进行跨平台部署
- mysql - SQL query to find users with apps with no releases
- reactjs - how to delete a single item using axios in react
- java - 在android项目中集成Liblinphone 4
- android - 这是活动内存泄漏吗?
- javascript - How can i get this timer to start on click instead of on page load?