2014-09-26 109 views
0

我正在使用HttpBuilder調用REST服務。我需要將JSON響應轉換爲POGO。Grails:將int轉換爲JSON解組中的枚舉

這裏簡化REST調用:

def http = new HTTPBuilder('http://www.example.com/api') 
http.request(Method.POST, ContentType.JSON) { 
    /* ... */ 
    response.success { resp, json -> 
     MyPogo pogo = (MyPogo) json 
    } 
} 

它通常工作。

但現在我哈瓦這樣的JSON:

{ persons: [{ name:"Jhon", gender:0 }, { name:"Mary", gender:1 }] } 

而且MyPogo有Gendern枚舉,像這樣:

class MyPogo implements Serializable { 
    String name 
    Gender gender 
} 

enum Gender { 
    MALE(0), 
    FEMALE(1) 

    private final int key 

    Gender(int key) { this.key = key } 
} 

使用這個POGO,HttpBuilder拋出一個GrailsCastException(無法施展整型性別)。

我知道如何一個int轉換爲枚舉以及如何註冊自定義JSON編組,但我怎麼能註冊自定義解組只對性別枚舉?

編輯:枚舉構造類型定義。

回答

0

嘗試添加類型定義構造函數:

enum Gender { 
    MALE(0), 
    FEMALE(1) 

    private final int key 

    Gender(int key) { 
     this.key = key 
    } 
} 
+0

對不起:我寫的不好我的例子。我真正的代碼已經像你建議:( – 2014-09-26 10:06:46