Flexjson и другие библиотеки сериализации JSON используют структуру модели в качестве руководства, поэтому они лучше всего работают, когда в модели есть данные, которые вы хотите поместить в JSON. Flexjson будет использовать методы свойств (getter / setter) во время сериализации. Поэтому, если вы хотите добавить вычисления, подобные тому, что вы говорили, вы можете добавить метод свойства getCssColumn (), и Flexjson будет рассматривать его как любое старое свойство:
public String getCssColumn() {
return ounces < SOME_THRESHOLD ? "tooSmall" : "justRight";
}
Таким образом, вы можете добавить к вашему объекту столько методов, сколько захотите, и он будет сериализовать их так же, как они были фактическими переменными экземпляра вашего объекта. Это хороший трюк для вывода вычисленных значений в ваш вывод JSON так, как вы ищете.
Если вам это не нравится, я бы предложил создать объект-обертку, который обернет объект вашей модели, чтобы отслеживать данные, которые вы хотите добавить в модель. Вам нужно быть гибким в выводе JSON, но вы можете обернуть значения вокруг него. Вы можете просто получить что-то вроде этого:
{
"cssColumn": "justRight",
...
"data": {
"ounces": 45,
...
}
}
Где данные указывают на объект вашей модели, следовательно, они находятся ниже уровня корня. Эта опция потребует немного больше памяти и потребует немного больше структуры (то есть больше классов для записи) для работы, поэтому я бы предпочел 1-й вариант, если это был я.