下面是我使用java使用jackson解析的json字符串,其中存储数组值将根据区域,美国,英国或任何地区动态变化。如何处理这些对象
{
"serviceType": {
"US - Northern California 1": [
{
"serviceName": "Virtual Private Cloud",
"tenantType": "VP",
"licenseType": "EDUCATIONAL",
"description": "Virtual Private Cloud",
"defaultFlag": "N",
"tooltip": "",
"storage": [
{
"ACC STORAGE": {
"storageName": "SSD Accelerated Storage",
"terms": [
[
"12 months",
"12_MTH",
[
"Prepaid",
"Monthly"
],
"N"
]
]
}
}
]
}
],
"US - New Jersey 1": [
{
"serviceName": "Air Dedicated Cloud",
"tenantType": "DCP",
"licenseType": "EDUCATIONAL",
"description": "Air Dedicated Cloud",
"defaultFlag": "N",
"tooltip": "",
"storage": [
{
"STD STORAGE": {
"storageName": "Standard Storage",
"terms": [
[
"12 months",
"12_MTH",
[
"Monthly",
"Prepaid"
]
]
]
}
}
]
}
]
}
}
我的问题是:我如何访问“存储”的内容,因为“ACC STORAGE”,“STD STORAGE”等都是动态值?
public class ServiceType
{
@JsonProperty("US - Northern California 1")
public List<serviceTypes> USNorthernCalifornia1;
@JsonProperty("US - New Jersey 1")
public List<serviceTypes> uSNewJersey1;
//getters and setters
}
public class serviceTypes
{
public class serviceTypes
{
@JsonProperty("serviceName")
public String serviceName;
@JsonProperty("tenantType")
public String tenantType;
@JsonProperty("licenseType")
public String licenseType;
@JsonProperty("description")
public String description;
@JsonProperty("defaultFlag")
public String defaultFlag;
@JsonProperty("tooltip")
public String tooltip;
@JsonProperty("storage")
public List<Storage> storage = new ArrayList<Storage>();
//getters and setters
}
public class storage
{
}
类存储空白,因为我很困惑,因为值会动态变化而声明
请帮帮我。提前谢谢
答案 0 :(得分:1)
通常这意味着某些属性使用基本Map
来包含值(其中键可以是任意字符串),而不是仅使用POJO。 Map
值仍可以是POJO,以及Map
或List
s。
答案 1 :(得分:0)
继续编写Storage类。杰克逊将通过Objectmapper将值自动映射到您的存储列表中。
一种解决方案可能是继承。您需要具有不同&#34; ID&#34;的多个班级。但是属性相同。
答案 2 :(得分:0)
我只想使用Map
。
public class ServiceTypes {
private List<Map<String, Storage>> storage;
// other fields ommited
}
Storage
课程现在将成为:
public class ServiceTypes {
private String storageName;
// etc
}
我已将字段的可见性更改为private
,您需要相应的getter和setter。