下面是我使用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存储“、"STD存储”等等都是动态值?。
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
{
}类存储保留为空白,因为我不知道为什么要声明,因为值将动态地更改
请帮帮我。提前感谢
发布于 2016-10-28 20:03:02
通常,这意味着一些属性使用基本的Map来包含值(其中键可以是任意字符串),而不是只使用POJO。Map值仍然可以是POJO,也可以是Map或List。
发布于 2016-10-27 03:35:55
继续编写存储类。Jackson将通过Objectmapper将这些值自动映射到存储列表中。
一个解决方案可能是继承。您需要具有不同“ID”但属性相同的多个类。
发布于 2016-10-28 20:57:00
我只需要使用一个Map。
public class ServiceTypes {
private List<Map<String, Storage>> storage;
// other fields ommited
}现在,Storage类将变成:
public class ServiceTypes {
private String storageName;
// etc
}我已经将字段的可见性更改为private,您需要相应的getter和setter。
https://stackoverflow.com/questions/40275374
复制相似问题