Java 使用Map和Normal对象映射JSON
我得到以下JSONJava 使用Map和Normal对象映射JSON,java,json,hashmap,jackson,Java,Json,Hashmap,Jackson,我得到以下JSON { 'routers': { 'external_gateway_info':{ }, 'description':'', 'gw_port_id':'1f290c84-02fe-4bdb-a063-77a425cc10f5', 'tenant_name':'lmco-test' }, 'tenants':{ '82d1df3fcf
{
'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是一个简单的对象,我将键/值映射到我的类routers.java,但租户是一个HashMap。
我无法找到一种方法,可以使用单个映射器将路由器和租户映射到单个对象
我的制图器
JSONObject jsonData = new JsonRepresentation(entity).getJsonObject();
RootModel rootModel = mapper.readValue(jsonData.toString(), RootModel.class);
Where Root.java代码段
public class RootModel {
private Router routers;
private Tenant tenants;
public RootModel(@JsonP
...
...
}
您的路由器类将如下:
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;
}
}
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;
}
}
你的根模型会是这样的
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;
}
}
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租户;
公共路由器getRouters(){
返回路由器;
}
公用路由器(路由器路由器){
这个。路由器=路由器;
}
公共HashMap getTenants(){
返回租户;
}
公共无效设置(哈希映射租户){
这个。租户=租户;
}
}
只要将租户转换为HashMap,它就可以正常工作。希望这能对您有所帮助。显然,没有更干净的方法可以将一张地图用于此类数据。我所做的是,我使用两个不同的映射器映射路由器和租户