我只想创建与以下等效的 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 in 5 minutes .对特定属性的理解来自于查看 Jackson 注释的文档。
关于java - 使用 jackson 创建简单的 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110446/