使用jackson创建简单的JSON结构

我只想创建相当于以下的jackson映射:

{\"isDone\": true} 

我想我需要创建一个这样的类:

 public class Status { private boolean isDone; public boolean isDone{ return this.isDone; } public void setDone(boolean isDone){ this.isDone = isDone; } } 

但是如何实现它然后将JSON写入字符串?

您的示例和Jackson的问题是JSON属性名称的默认选择:Jackson将看到isDonesetDone并选择done作为JSON属性名称。 您可以使用JsonProperty批注覆盖此默认选项:

 public class Status { private boolean isDone; @JsonProperty("isDone") public boolean isDone() { return this.isDone; } @JsonProperty("isDone") public void setDone(boolean isDone) { this.isDone = isDone; } } 

然后:

 Status instance = new Status(); String jsonString = null; instance.setDone(true); ObjectMapper mapper = new ObjectMapper(); jsonString = mapper.writeValueAsString(instance); 

现在jsonString包含{ "isDone" : true } 。 请注意,您还可以使用ObjectMapper.writeValue(OutputStream,Object)将字符串写入OutputStream ,或使用ObjectMapper.writeValue(Writer,Object)将字符串写入Writer 。

在这种情况下,您实际上只需要在任一访问器上使用JsonProperty注释,但不能同时使用两者。 只需注释isDone就会获得您想要的JSON属性名称。

使用JsonProperty注释的另一种方法是重命名访问器setIsDone/getIsDone 。 然后注释是不必要的。

快速而肮脏的jackson教程: jackson在5分钟内完成 。 通过查看jackson注释的文档来了解特定属性。

对。 所需代码:

 ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(new Status()));