我只想创建以下杰克逊映射等效项:
{"isDone": true}
我想我需要创建一个这样的类:
public class Status {
private boolean isDone;
public boolean isDone{
return this.isDone;
}
public void setDone(boolean isDone){
this.isDone = isDone;
}
}
但是我如何设置它,然后将 JSON 写入字符串?
您的示例和杰克逊的一个问题是 JSON 属性名称的默认选择:杰克逊将看到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
。那么注释是不必要的。
请参阅快速而肮脏的杰克逊教程:5 分钟内的杰克逊。对特定属性的理解来自于查看杰克逊注释的文档。
对。所需的代码:
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Status()));