首页 > 解决方案 > 我如何在 Java 的 Jackson 库中打印对象名称作为 JSON 的一部分?

问题描述

我正在尝试确定如何使用 Java 的 Jackson 库打印出如下所示的 JSON:

{
    "status": {
        {
          "busStatus" : {
            "status" : null,
            "transactions" : "0",
            "retries" : "0",
            "failures" : "0"
          }
        }
    }
}

我在那里 95%,但目前没有打印最外面的对象。这是我目前正在输出的内容:

{
  "busStatus" : {
    "status" : null,
    "transactions" : "0",
    "retries" : "0",
    "failures" : "0"
  }
}

我有一个看起来像这样的 Java 类:

public class DataClass {

    public StatusData status = new StatusData();
    public StatusConfig config = new StatusConfig();
    

    public class StatusData {
        public SerialStatus busStatus = new SerialStatus();
    }
    
    public class StatusConfig {
        
    }

    public class SerialStatus {
        public String status = null;
        public String transactions = "0";
        public String retries = "0";
        public String failures = "0";
    }
}

我正在使用以下代码将此类打印到 json:

private DataClass internalData;
ObjectMapper mapper = new ObjectMapper();
status = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(internalData.status);

有没有一种方法可以配置 Jackson 以将其序列化为 JSON 的对象的名称打印出来?

标签: javajsonjackson

解决方案


要实现您想要的,您需要打印DataClass而不是StatusData. 如下所示:

private DataClass internalData = <initialize>;
ObjectMapper mapper = new ObjectMapper();
String data = 
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(internalData);

推荐阅读