有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java映射JSON与Map和Normal对象

我得到以下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'
      }
}

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

我的制图器

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

根在哪里。java代码片段

public class RootModel {

    private Router routers;
    private Tenant tenants;


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

共 (2) 个答案

  1. # 1 楼答案

    你的路由器课程会是这样的

    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. # 2 楼答案

    显然,没有更干净的方法来使用一张地图来处理此类数据。我使用了两个不同的映射器来映射路由器和租户