使用嵌套类转换JSON到POJO

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

我收到了一些JSON在从数据提供一个字符串格式,从我的理解,我可以使用一个类文件中的JSON转换成POJO。数据提供商提供,我已经成功地使用了JSON成POJO的转换@JsonProperty类。我的问题是,是否有可能有一个包含所有@JsonProperty类只是一个嵌套的java类?而不是单独的类的,其中也有不少。

JSON字符串:

{
    "BillingAccount": {
        "AccountType": "Trial",
        "AccountBalance": 999.99,
        "TransactionCost": 999.99,
        "ExtraInformation": {}
    },

    "Request": {
        "RequestGuid": "abcde",
        "PackageId": "abcde",
        "PackageVersion": 2,
        "ResponseVersion": 2,
        "DataKeys": {
            "Vrm": "example"
        }
    }
}

billing account.Java

public class BillingAccount
{
    @JsonProperty("AccountType")
    public String accountType;
    @JsonProperty("AccountBalance")
    public double accountBalance;
    @JsonProperty("TransactionCost")
    public double transactionCost;
    @JsonProperty("ExtraInformation")
    public ExtraInformation extraInformation;
}

data keys.Java

public class DataKeys
{
    @JsonProperty("Vrm")
    public String vrm;
}

request.Java

public class Request
{
    @JsonProperty("RequestGuid")
    public String requestGuid;
    @JsonProperty("PackageId")
    public String packageId;
    @JsonProperty("PackageVersion")
    public int packageVersion;
    @JsonProperty("ResponseVersion")
    public int responseVersion;
    @JsonProperty("DataKeys")
    public DataKeys dataKeys;
}

PO Jo.Java

public class POJO {

    @JsonProperty("BillingAccount")
    public JSONSorter.BillingAccount billingAccount;
    @JsonProperty("Request")
    public JSONSorter.Request request;

}

理想的解决方案:

正如你可以看到有容纳其他类的JSONSorter类。因此,在创建POJO时,我会叫公共JSONSorter.Request request;而不是调用只是请求。原因这是一个理想的解决方案是因为Request类可以有根据正在检索什么数据集不同的属性。因此,而不是Request1,请求2的,Request3岂不是更好有JSONSorter1,JSONSorter2,JSONSorter3。其中的每一个将包括必要的检索的数据的类。

public class JSONSorter {

    public class Request {
        @JsonProperty("RequestGuid")
        public String requestGuid;
        @JsonProperty("PackageId")
        public String packageId;
        @JsonProperty("PackageVersion")
        public int packageVersion;
        @JsonProperty("ResponseVersion")
        public int responseVersion;
        @JsonProperty("DataKeys")
        public DataKeys dataKeys;
    }

    public class DataKeys {
        @JsonProperty("Vrm")
        public String vrm;
    }

    public class BillingAccount {
        @JsonProperty("AccountType")
        public String accountType;
        @JsonProperty("AccountBalance")
        public double accountBalance;
        @JsonProperty("TransactionCost")
        public double transactionCost;
        @JsonProperty("ExtraInformation")
        public ExtraInformation extraInformation;
    }

}
java json jackson inner-classes
1个回答
1
投票

你理想的解决方案应该工作。唯一缺少的唯一的事情是使内部类是静态的。他们必须是静态的,这样你的JSON解串器可以在不需要将其连接到JSONSorter现有实例实例化它们。

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