1

我正在为 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在控制器中使用来生成这个输出。

4

1 回答 1

1
class CustomDuration{
 String durFieldInDurationClass
 String toString(){
   return durFieldInDurationClass
 }
 static {
  grails.converters.JSON.registerObjectMarshaller(CustomDuration) {
     return it.duration
    }
}
于 2013-12-08T13:51:05.130 回答