使用jackson创建简单的JSON结构

use*_*254 5 java json jackson

我想创建相当于以下的杰克逊映射:

{\"isDone\": true}
Run Code Online (Sandbox Code Playgroud)

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

public class Status {

    private boolean isDone;

    public boolean isDone{
        return this.isDone;
    }

    public void setDone(boolean isDone){
        this.isDone = isDone;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

pb2*_*b2q 6

你的榜样和杰克逊的一个问题是JSON属性名的默认选择:杰克逊将看到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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

Status instance = new Status();
String jsonString = null;

instance.setDone(true);
ObjectMapper mapper = new ObjectMapper();

jsonString = mapper.writeValueAsString(instance);
Run Code Online (Sandbox Code Playgroud)

现在jsonString包含{ "isDone" : true }.请注意,您还可以写入字符串到OutputStream使用ObjectMapper.writeValue(OutputStream中,对象),或者一个Writer使用ObjectMapper.writeValue(作家,对象).

在这种情况下,您实际上只需要JsonProperty在任一访问器上注释,但不能同时需要两者.只需注释即可isDone获得所需的JSON属性名称.

使用JsonProperty注释的替代方法是重命名访问者setIsDone/getIsDone.然后注释是不必要的.

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