首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Json中使用java中的jackson获得动态更改键的值

如何在Json中使用java中的jackson获得动态更改键的值
EN

Stack Overflow用户
提问于 2016-10-27 02:58:02
回答 3查看 970关注 0票数 1

下面是我使用java使用jackson进行的json字符串解析,其中存储数组值将根据区域、美国、英国或任何区域动态变化。如何处理这些对象

代码语言:javascript
复制
{
"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存储”等等都是动态值?

代码语言:javascript
复制
  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
{

}

类存储保留为空白,因为我不知道为什么要声明,因为值将动态地更改

请帮帮我。提前感谢

EN

回答 3

Stack Overflow用户

发布于 2016-10-28 20:03:02

通常,这意味着一些属性使用基本的Map来包含值(其中键可以是任意字符串),而不是只使用POJO。Map值仍然可以是POJO,也可以是MapList

票数 1
EN

Stack Overflow用户

发布于 2016-10-27 03:35:55

继续编写存储类。Jackson将通过Objectmapper将这些值自动映射到存储列表中。

一个解决方案可能是继承。您需要具有不同“ID”但属性相同的多个类。

票数 0
EN

Stack Overflow用户

发布于 2016-10-28 20:57:00

我只需要使用一个Map

代码语言:javascript
复制
public class ServiceTypes {

    private List<Map<String, Storage>> storage;

    // other fields ommited
}

现在,Storage类将变成:

代码语言:javascript
复制
public class ServiceTypes {

    private String storageName;

    // etc
}

我已经将字段的可见性更改为private,您需要相应的getter和setter。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40275374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档