【问题标题】:Mapping JSON with Map and Normal Objects使用 Map 和 Normal 对象映射 JSON
【发布时间】:2017-07-12 21:12:05
【问题描述】:

我正在关注 JSON

{  
   'routers':
      {  
         'external_gateway_info':{  },
         'description':'',
         'gw_port_id':'1f290c84-02fe-4bdb-a063-77a425cc10f5',
         'tenant_name':'lmco-test'
      },
     'tenants':{  
          '82d1df3fcfc14ac594c6f5c5b6dcad6a':'lmco-test',
          '6eb4b2dd40dc4d63a3c8a691c371dd06':'admin',
          '10b0726823784ceca219821d44a2b5d1':'ivs-perf',
          'VRRP_Service':'VRRP_Service',
          '8fb76703c3084308a01d113751560730':'service'
      }
}

现在路由器是一个简单的对象,我将键/值映射到我的类 Routers.java,但租户是一个 HashMap。 我找不到可以使用单个映射器将路由器和租户映射到单个对象的方法

我的映射器

JSONObject jsonData = new JsonRepresentation(entity).getJsonObject();
RootModel rootModel = mapper.readValue(jsonData.toString(), RootModel.class);

在哪里Root.java sn -p

public class RootModel {

    private Router routers;
    private Tenant tenants;


    public RootModel(@JsonP
...
...
}

【问题讨论】:

    标签: java json hashmap jackson


    【解决方案1】:

    你的 Router 类会是这样的,

    class Router {
    
        private String external_gateway_info;
        private String description;
        private String gw_port_id;
        private String tenant_name;
    
        public String getExternal_gateway_info() {
            return external_gateway_info;
        }
    
        public void setExternal_gateway_info(String external_gateway_info) {
            this.external_gateway_info = external_gateway_info;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
        public String getGw_port_id() {
            return gw_port_id;
        }
    
        public void setGw_port_id(String gw_port_id) {
            this.gw_port_id = gw_port_id;
        }
    
        public String getTenant_name() {
            return tenant_name;
        }
    
        public void setTenant_name(String tenant_name) {
            this.tenant_name = tenant_name;
        }
    
    }
    

    你的 RootModel 会是,

    class RootModel {
    
        private Router routers;
        private HashMap<String, String> tenants;
    
        public Router getRouters() {
            return routers;
        }
    
        public void setRouters(Router routers) {
            this.routers = routers;
        }
    
        public HashMap<String, String> getTenants() {
            return tenants;
        }
    
        public void setTenants(HashMap<String, String> tenants) {
            this.tenants = tenants;
        }
    
    }
    

    只需将您的租户转换为 HashMap 即可。希望这会对你有所帮助。

    【讨论】:

      【解决方案2】:

      显然没有更简洁的方法可以将一张地图用于此类数据。我所做的,我使用了两个不同的映射器来映射路由器和租户。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-04
        • 1970-01-01
        • 2019-05-27
        • 2018-01-29
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多