我想创建与以下相同的杰克逊映射:
{\"isDone\": true}
我想我需要创建一个这样的类:
public class Status {
private boolean isDone;
public boolean isDone{
return this.isDone;
}
public void setDone(boolean isDone){
this.isDone = isDone;
}
}
但是如何实现它然后将JSON写入字符串?
答案 0 :(得分:6)
您的示例和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。通过查看杰克逊注释的文档来了解特定属性。
答案 1 :(得分:2)
右。所需的代码:
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Status()));