我正在为 grails 中的 WorkDone 域类字段使用 LocalTime 持续时间。当使用呈现为 JSON 时,此字段被呈现为字符串而不是对象。我认为这是因为这个类中的 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
在控制器中使用来生成这个输出。