Почему Joda LocalTime отображается как String в Json Grails?

Я использую продолжительность LocalTime для поля класса домена WorkDone в Grails. При использовании рендеринга в формате 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 в контроллере для создания этого вывода.


person Yash Agarwal    schedule 04.12.2013    source источник