2016-05-30 27 views
0

我想創建一個json schema爲對應的Java 枚舉的變長值。信息如下:使用jsonschema2pojo轉換變長值的枚​​舉

JSON嘗試:

"Info": { 
     "type": "string", 
     "enum": [ 
     "TITLE", 
     "ADDRESS", 
     "NAME"; 
     ] 
    } 

,但這不會提供所需的輸出,而不是轉換的java類,我得到的是

電流輸出:

public static enum Info { 
     TITLE("TITLE"), 
     ADDRESS("ADDRESS"), 
     NAME("NAME"); 
} 

所需的Java輸出:

public enum Info { 
    TITLE(45), 
    ADDRESS(100), 
    NAME(45); 

    private Integer maxLength; 

    Info(Integer maxLength) { 
     this.maxLength = maxLength; 
    } 

    public Integer getMaxLength() { 
     return maxLength; 
    } 
} 

無法想出一個辦法來解決這個問題。將不勝感激任何幫助。

+0

你確定你的JSON是正確的? –

+0

@cihanseven:JSON是正確的,這就是爲什麼它轉換爲當前輸出,但我需要將其更改爲獲得所需的輸出。 – nullpointer

回答

1

據我可以告訴這是目前不可能的。如果你看源代碼,那麼枚舉是由org.jsonschema2pojo.rules.enumRule生成的。 jsonschema2pojo爲每個枚舉提供了一個構造函數,這對你的用例需要一個Integer類型的參數。構造函數在line 199通過下面的代碼

JVar valueParam = constructor.param(String.class, VALUE_FIELD_NAME); 

即產生,構造是硬編碼爲始終以String類型的單個參數。

您可以做的最好的方法就是使用javaEnumNames屬性,它允許您指定枚舉的名稱和值(限制值始終是字符串)。

{ 
    "javaEnumNames" : [ 
    "TITLE", 
    "ADDRESS", 
    "NAME" 
    ], 
    "enum" : [ 45, 100, 45 ]   
} 

這JSON片段產生

... 
TITLE("45"), 
ADDRESS("100"), 
NAME("45"); 
...