【发布时间】:2014-09-26 08:21:13
【问题描述】:
我正在使用 HttpBuilder 来调用 REST 服务。我需要将 JSON 响应转换为 POGO。
这里是一个简化的 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(无法将 Integer 转换为 Gender)。
我知道如何将 int 转换为枚举以及如何注册自定义 JSON 编组器,但是如何仅为 Gender 枚举注册自定义解组器?
编辑:枚举构造函数中的类型定义。
【问题讨论】: