我在Grails中使用WorkDone域类字段的LocalTime持续时间。使用render作为JSON时,此字段将呈现为String而不是Object。我认为这是因为这个类中的toString()方法。
class WorkDone{
LocalTime duration
}
Json output = {"duration":"00:00:00"}
但是如果我用我的自定义类CustomDuration实现这个字段,它会在生成的JSON字符串中显示整个对象。 我也在这个类中实现了toString()方法。
class WorkDone{
CustomDuration duration
}
json output = {"duration":{ durFieldInDurationClass:"00:00:00"}}
为什么我会看到这种行为?
我在这两种情况下都有这张地图:
grails.converters.JSON.registerObjectMarshaller(WorkDone ) {
def returnMap = [:]
returnMap.put("duration", it.duration)
return returnMap
}
我的自定义持续时间等级
class CustomDuration{
String durFieldInDurationClass
String toString(){
return durFieldInDurationClass
}
}
我在控制器中使用render workdoneobject as JSON
来生成此输出。
答案 0 :(得分:1)
class CustomDuration{
String durFieldInDurationClass
String toString(){
return durFieldInDurationClass
}
static {
grails.converters.JSON.registerObjectMarshaller(CustomDuration) {
return it.duration
}
}