【问题标题】:How do I control which properties of my data objects are serialized to the JSON response in Struts 2?如何控制我的数据对象的哪些属性被序列化为 Struts 2 中的 JSON 响应?
【发布时间】:2012-09-05 13:05:14
【问题描述】:

我使用 struts 已经有一段时间了,但从未想到过很棒的“json”响应类型。

我有很多想要返回给客户的对象。我在 UI 上只使用了这些字段的一个子集(通常是“displayName”)。

有没有办法将序列化为 JSON 的字段限制回客户端?

我能想到的一种显而易见的方法是创建一个包含字段子集的视图对象。请在此处提出最佳做法。

【问题讨论】:

标签: java json struts2


【解决方案1】:

您可以使用 json 插件的 exclude 属性来排除您不想序列化的属性。

<interceptor-ref name="json">
  <param name="enableSMD">true</param>
  <param name="excludeProperties">
    login.password,
    studentList.*\.sin
  </param>
</interceptor-ref>

更多详情请参考json-plugin

【讨论】:

  • Umesh,感谢您的快速回复。我一直在寻找的是某种注释方法。但是,上述解决方案也可以达到目的。在将其标记为接受之前,我将等待更多答案。再次感谢!
  • @Gopal 使用“json”结果类型时,没有基于 Struts 2 注释的方法。您可以使用 GSON,序列化为流,并使用 Struts 2 的“流”响应,尽管流回序列化操作对我来说感觉很奇怪——没有考虑这么多,但可能会。
【解决方案2】:

在我的实践中,我发现使用 JSON 对象最简单的方法是 GSON。有据可查,使用直观。在很多情况下帮助了我。

使用 GSON 很容易解决您的问题。

https://sites.google.com/site/gson/gson-user-guide#TOC-Excluding-Fields-From-Serialization-and-Deserialization

https://sites.google.com/site/gson/gson-user-guide#TOC-Goals-for-Gson

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2019-03-21
    • 1970-01-01
    • 2021-05-03
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多