JACKSON:如何使用Jackson将POJO转换为JSON时忽略POJO名称?

问题描述 投票:1回答:1

[我正在使用Jackson 2.10.1库将Java POJO转换为JSON,并且得到以下输出,我需要不带POJO名称的输出(此处是MyTestPojo,我已经尝试了@JsonIgnoreProperties之类的各种jackson注释,但是这些都是主要用于POJO中存在的成员,而不是POJO类名称。

{
    "MyTestPojo": [
        {
            "CreatedBy": "user1",
            "Name": "testABC",
            "UpdatedBy": null,
            "UpdatedDate": null,
            "IsActive": true,
            "Value": "testABC1",
            "CreatedDate": "2017-03-13 15:41:54.0",
            "Description": "testABC"
        },
        {
            "CreatedBy": "user2",
            "Name": "testABC",
            "UpdatedBy": null,
            "UpdatedDate": null,
            "IsActive": false,
            "Value": "testABC2",
            "CreatedDate": "2017-03-13 15:41:54.0",
            "Description": "testABC"
        }
    ]
}

而我需要的是-

[
        {
            "CreatedBy": "user1",
            "Name": "testABC",
            "UpdatedBy": null,
            "UpdatedDate": null,
            "IsActive": true,
            "Value": "testABC1",
            "CreatedDate": "2019-03-13 15:41:54.0",
            "Description": "testABC"
        },
        {
            "CreatedBy": "user2",
            "Name": "testABC",
            "UpdatedBy": null,
            "UpdatedDate": null,
            "IsActive": false,
            "Value": "testABC2",
            "CreatedDate": "2020-03-10 15:41:54.0",
            "Description": "testABC"
        }
    ]
}

有没有一种方法可以通过Jackson注释来处理?

我使用的POJO是-

@JacksonXmlRootElement(localName = "ArrayOfTestPojos")
public class GetResponseVO {

    @JsonProperty("MyTestPojo")
    @JacksonXmlProperty(localName = "MyTestPojo")
    @JacksonXmlElementWrapper(useWrapping = false)
    private ArrayList<MyTestPojo> MyTestPojoList;

    public ArrayList<MyTestPojo> getMyTestPojoList() {
        return MyTestPojoList;
    }

    public void setMyTestPojoList(ArrayList<MyTestPojo> MyTestPojoList) {
        this.MyTestPojoList = MyTestPojoList;
    }

// standard getters and setters

}

@JacksonXmlRootElement(localName = "MyTestPojo")
public class MyTestPojo {

    @JsonProperty("Name")
    private String name;

    @JsonProperty("Description")
    private String description;

    @JsonProperty("IsActive")
    private int isActive;

    @JsonProperty("Value")
    private String value = null;

    @JsonProperty("CreatedBy")
    private String createdBy;

    @JsonProperty("CreatedDate")
    private String createdDate;

    @JsonProperty("UpdatedBy")
    private String updatedBy;

    @JsonProperty("UpdatedDate")
    private String updatedDate;

// standard getters and setters.    
}
```````````
I am also generating the XML out of this so you can ignore the annotations relevant to XML.
java json marshalling jackson-databind jackson2
1个回答
0
投票

您可以为此目的使用JsonValue批注,该批注基本上是“此属性的使用值,而不是序列化容器对象”。也可以在getters上使用

© www.soinside.com 2019 - 2024. All rights reserved.