Java Jackson将POJO序列化为JS对象
使用Java Jackson将POJO序列化为JS对象,java,jackson,objectmapper,Java,Jackson,Objectmapper,使用ObjectMapper()序列化上述对象。convertValue(foo,JsonNode::class)将以以下形式返回JSON对象: class Foo { String name = "Bar"; } 然而,我期望的结果是: { "name": "Bar" } 我尝试过一个自定义序列化程序,但它总是将键作为字符串写入。有没有一种方法可以使用Jackson或它的任何注释以这种格式序列化我的POJO,以避免替换字符或自行构建字符串 除了您的“JSON”将不再有效之外,您还可
ObjectMapper()序列化上述对象。convertValue(foo,JsonNode::class)
将以以下形式返回JSON对象:
class Foo {
String name = "Bar";
}
然而,我期望的结果是:
{
"name": "Bar"
}
我尝试过一个自定义序列化程序,但它总是将键作为字符串写入。有没有一种方法可以使用Jackson或它的任何注释以这种格式序列化我的POJO,以避免替换字符或自行构建字符串 除了您的“JSON”将不再有效之外,您还可以在对象映射器中禁用JsonGenerator.Feature.QUOTE\u FIELD\u name
{
name: "Bar"
}
mapper.writeValueAsString(new Foo())
的结果将是:
ObjectMapper mapper = new ObjectMapper()
.disable(JsonGenerator.Feature.QUOTE_FIELD_NAMES);
要启用“漂亮打印”,您可以使用:
{name:"Bar"}
或者在输出步骤中使用此选项:
ObjectMapper mapper = new ObjectMapper()
.disable(JsonGenerator.Feature.QUOTE_FIELD_NAMES)
.enable(SerializationFeature.INDENT_OUTPUT);
这两种情况的结果都是:
String result = mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(new Foo());
JSON的定义也是如此:这里可以阅读如何解析:您想要的结果不是有效的JSON。你是在尝试生成JSON,还是类似JSON的东西?@Makoto JSON作为JavaScript对象。记住——你不能让一个JavaScript对象包含无效的JSON,所以我将再次声明——这将是类似JSON的东西(而你处理的事实是,它在你这方面无效),还是你将它提供给其他东西(就像一个JavaScript应用程序)哪个会合理地期望有效的JSON?我生成一个javascript对象,并使用application/javascript
content-type传递它。这被注入JS前端应用程序。这正是我所寻找的。我知道它破坏了JSON的有效性,但它不完全是JSON。它被注入前端作为JS对象,可以我没有引用字段名。非常感谢。很抱歉,它工作正常。它正在从缓存加载响应。感谢您的帮助。
{
name : "Bar"
}