2017-10-18 61 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" 
         } 
        } 
       } 

      } 
     }  
    } 
} 
相關問題