java - 使用 jackson 创建简单的 JSON 结构

标签 java json jackson

我只想创建与以下等效的 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 将看到 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;
    }
}

然后:

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/

相关文章:

json - WildFly 在全局范围内支持开发中的 pretty-print ,但不支持生产中

android - Android 中解析 JSON 的问题

java - 如何最小化 J2ME 应用程序?

arrays - 如何将字符串编码的 float 数组解码为 float 数组?

java - 使文件传输更高效 Java

arrays - Swift 数组不会填充 JSON 数据

java - 配置 CsvMapper 以检查写入的每个值

java - 如果 getter 抛出异常,如何让 Jackson 忽略属性

java - StringBuilder 是否慢到我应该缓存它的结果?

java - Android Context对象如何处理