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"
}