2012-02-26 1 views
2

Я использую Play Framework, чтобы открыть API REST, который возвращает некоторые объекты JSON. Чтобы упростить использование API, я хотел бы вернуть «вычисленное» поле в ответе.Как сериализовать переходные поля в модели через FlexJson?

К сожалению, в моих тестах, в то время как FlexJson не игнорировать переходные модели поля полностью, но всегда ставит их в «нулевой».

Подробнее:

В модели класса, я определяю:

@Transient 
public String currencyName; 

только конструктор класса установить значение "доллар" (для отладки):

this.currencyName = "dollar"; 

При сериализации класса с использованием FlexJson, когда поле «currencyName» d не указан в включении/исключение - результат всегда выглядит следующим образом:

"currencyName":null 

Любой идея, что ошибался, и как получить значение поля сериализована в JSON?

Заранее спасибо.

ответ

3

По определению, если ваше поле является временным, оно не будет сериализовано. Возможно, это поле не должно быть временным в вашей заявке, если это имеет значение.

+0

Спасибо. Я использую сериализацию, чтобы генерировать «чистый» JSON, а не передавать «состояние» объекта между приложениями. Моя мысль заключалась в том, что вместо того, чтобы настраивать поля «this.currency» для «распечатки» в JSON, используйте рассчитанные поля, чтобы напрямую указать формат JSON. Любая мысль? – Max

+0

Если вы не заинтересованы в сохранении этого поля или состоянии, почему бы вам не удалить это поле вообще. У вас может быть метод, который вычисляет и возвращает это значение, т. Е. String getCurrencyName() – emt14

+0

Альтернативно используйте метод exclude из сериализатора: новый JSONSerializer(). Exclude ("currencyName"). Сериализовать («Валюта», валюта); – emt14