【问题标题】:How to serialize transient fields in the model via FlexJson?如何通过 FlexJson 序列化模型中的瞬态字段?
【发布时间】:2012-02-26 21:15:02
【问题描述】:

我正在使用 Play Framework 来公开 REST API,它返回一些 JSON 对象。 为了简化 API 的使用,我想在响应中返回一个“计算”字段。

不幸的是,在我的测试中,虽然 FlexJson 并没有完全忽略 transient 模型字段,但总是将它们设置为“null”。

更多细节:

model 类中,我定义:

@Transient
public String currencyName;

类的唯一构造函数将值设置为“美元”(用于调试目的):

this.currencyName = "dollar";

当使用 FlexJson 序列化类时,当包含/排除中未指定“currencyName”字段时 - 结果总是如下所示:

"currencyName":null

知道出了什么问题,以及如何将字段值序列化为 JSON?

提前致谢。

【问题讨论】:

    标签: json serialization playframework flexjson


    【解决方案1】:

    根据定义,如果您的字段是瞬态的,它将不会被序列化。如果状态很重要,也许这个字段在您的应用程序中不应该是暂时的。

    【讨论】:

    • 谢谢。我正在使用序列化来生成“干净”的 JSON,而不是在应用程序之间传输对象“状态”。我的想法是,不要将“this.currency”中的哪些字段“打印”到 JSON 中,而是使用计算字段直接指定 JSON 格式。有什么想法吗?
    • 如果您对保留此字段或保持状态不感兴趣,为什么不完全删除此字段。你可以有一个方法来计算并返回这个值,即 String getCurrencyName()
    • 或者使用序列化器中的 exclude 方法:new JSONSerializer().exclude("currencyName").serialize("Currency", currency);
    • 非常感谢,“emt14”。我实现了 String getCurrencyName() - 完全按照你的描述工作。
    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2012-03-30
    • 2012-12-27
    • 2018-09-23
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多