Используя Grail 1.3.7, я обнаружил, что JSON-конвертер игнорирует переходные свойства объектов Domain.Вопрос: существует ли элегантный способ обойти это препятствие.
Дополнительный вопрос: в чем причина исключения вычисленных полей (переходных элементов) из отправки в ответ ????
у меня работает эта строка
def jsonobj=domobj.properties as JSON
Переходный процесс сделан именно для этого: Переменные могут быть помечены как переходные, чтобы указать, что они не являются частью постоянного состояния объекта
И JSON - это сериализованное (= постоянное) состояние объекта
Итак, если вам нужно его сериализовать - вам нужно создать новый класс, только для сериализации json, который будет иметь все поля, необходимые для сериализации.
один из способов - создать ответ json вручную, например,
["prop1" : obj.prop1, "prop2" : obj.prop2, ...] as JSON
Вы можете использовать плагин "marshallers" и определить свое временное свойство как виртуальное:
static marshalling = { virtual { yourPropery { value, json -> json.value(value.yourPropery) } } }
Если вам нужен детальный контроль над полями, которые включены / исключены в JSON, я лучше использую JSONBuilder лучше, чем конвертер.Вот пример того, как это сделать.