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