![](/img/trans.png)
[英]Cannot convert nested JSON to POJO using Resttemplate in Spring Boot
[英]Convert JSON to POJO using nested classes
我从数据提供者处收到一些String格式的JSON,据我了解,我可以使用类文件将JSON转换为POJO。 数据提供程序提供了@JsonProperty
类,我已经设法使用@JsonProperty
类将JSON转换为POJO。 我的问题是,是否可能只有一个嵌套的Java类包含所有@JsonProperty
类? 而不是有很多单独的类。
Json String:
{
"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;
}
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;
}
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之外,拥有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;
}
}
您理想的解决方案应该起作用。 唯一缺少的是使内部类静态化。 它们必须是静态的,以便您的JSON解串器可以实例化它们,而无需将它们附加到现有的JSONSorter实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.