2017-10-18 56 views
1

我有一个非常独特的用例,其中有一些来自第三方的JSON数据,我无法修改。在不修改JSON数据的情况下创建泛型Java类

{  
    "Information": { 
     "mobile": { 
      "name": "Mobile Application", 
      "classType" : "A" 
     }, 
     "desktop": { 
      "name": "Desktop Application", 
      "classType" : "B" 
     }, 
     "tablet": { 
      "name": "Tablet Application", 
      "classType" : "A" 
     } 
    } 

} 

接下来,有多个组件使用此数据。我不想提供整个JSON,而是希望提供更易于使用的这些组件Java对象。所以,我使用jsonschema2pojo tool从这个JSON创建了JAVA对象。

现在,问题是,当我使用这个库时,它会为移动设备,桌面设备和平板电脑创建三个不同的Java文件(并且这样做是正确的),但使用此信息的组件会需要泛型类而不是手机桌面和平板电脑的处理方式不同另外,由于可以添加更多的设备,并且只有很多组件,我不想保留特定的类。我希望3P提供了一个通用的“设备”,它具有可存储移动/桌面或平板电脑信息的现场设备类型,但这需要很长时间。同时,你可以想到的任何解决方案?

+0

JSON字符串到Java对象的动态密钥名 https://stackoverflow.com/questions/39159770/json-string-to-java-object -with动态密钥名 – resource8218

回答

0

创建JSON模式而不是JSON来生成类并使用'javaType'来生成泛型类。

确认与上述JSON模式:

{ 
    "type":"object", 
    "properties": { 
     "Information": { 
      "type": "object", 
      "properties": { 
       "mobile": { 
        "type": "object", 
        "javaType":"Devices", 
        "properties": { 
         "name" : { 
          "type": "string" 
         }, 
         "classType" : { 
          "type": "string" 
         } 
        } 
       }, 
       "tablet": { 
        "type": "object", 
        "javaType":"Devices", 
        "properties": { 
         "name" : { 
          "type": "string" 
         }, 
         "classType" : { 
          "type": "string" 
         } 
        } 
       }, 
       "desktop": { 
        "type": "object", 
        "javaType":"Devices", 
        "properties": { 
         "name" : { 
          "type": "string" 
         }, 
         "classType" : { 
          "type": "string" 
         } 
        } 
       } 

      } 
     }  
    } 
} 
相关问题