使用嵌套类将JSON转换为POJO



我从数据提供者那里收到了一些字符串格式的JSON,据我所知,我可以使用类文件将JSON转换为POJO。数据提供程序提供了@JsonProperty类,我已经设法使用这些类将JSON转换为POJO。我的问题是,是否可能只有一个嵌套的java类,其中包含所有的@JsonProperty类?而不是有很多单独的类。

Json字符串:

{
"BillingAccount": {
"AccountType": "Trial",
"AccountBalance": 999.99,
"TransactionCost": 999.99,
"ExtraInformation": {}
},
"Request": {
"RequestGuid": "abcde",
"PackageId": "abcde",
"PackageVersion": 2,
"ResponseVersion": 2,
"DataKeys": {
"Vrm": "example"
}
}
}

BillingAccount.java

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

DataKeys.java

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

请求.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;
}

POJO.java

public class POJO {
@JsonProperty("BillingAccount")
public JSONSorter.BillingAccount billingAccount;
@JsonProperty("Request")
public JSONSorter.Request request;
}

理想解决方案:

正如您所看到的,有一个包含其他类的JSONSorter类。因此,当创建POJO时,我会调用公共JSONSorter.Request request;,而不是只调用Request。之所以这是一个理想的解决方案,是因为Request类可能具有不同的属性,这取决于要检索的数据集。因此,与其有Request1、Request2、Request3,不如有JSONorter1、JSONortER2、JSONPorter3。其中的每一个都包含要检索的数据所必需的类。

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;
}
}

理想的解决方案应该可以工作。唯一缺少的是使内部类成为静态的。它们必须是静态的,这样您的JSON反序列化程序就可以实例化它们,而无需将它们附加到JSONSorter的现有实例。

最新更新