使用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将看到isDone
和setDone
并选择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()));