【问题标题】:Grails REST API hide "class" in respond listGrails REST API 在响应列表中隐藏“类”
【发布时间】:2014-02-04 00:16:34
【问题描述】:

我正在使用 Grails 2.3.2 使用内置的 Grails REST 支持来处理 REST API。我无法摆脱 JSON 响应中的“类”元素。根据 Bobby Warner 的教程,我发现将以下内容添加到 resources.groovy 文件中:

meterRenderer(JsonRenderer, Meter) {
    excludes = ['class']
}

这适用于show,但对于index 控制器功能,我是responding 与Meters 的列表。在这方面,“类”并没有消失。如何在列表响应中消除这种情况?

编辑:澄清一下,我正在寻找一种方法来利用 Grails 新的 respond 功能的内容协商功能,而不会将自己锁定到 render as JSON 实现。

【问题讨论】:

标签: rest grails


【解决方案1】:

我想如果您改用 GSON (github) 而不是 JSON,那么您不必担心特定的排除。

这是由插件提供的config setting 驱动的grails.converters.gson.domain.include.class(默认为false)。

【讨论】:

  • 谢谢,dmahapatro。 GSON 插件看起来很棒,但它的 RESTful 控制器支持似乎只是用硬编码的 render as GSON 响应覆盖现有的控制器脚手架,而不是更新 respond 功能。我已经编辑了我的答案,希望能澄清我在寻找什么。
【解决方案2】:

nickdos 的SO link 给出了答案。我在我的 BootStrap.groovy 中添加了以下内容:

grails.converters.JSON.registerObjectMarshaller(Meter) {
    return it.properties.findAll {k,v -> k != 'class'}
}

respond 调用导致没有 "class" 项目。奇怪的是,我在此过程中丢失了 "id" 项目,但我会将其保存为另一个 SO 问题。 :)

【讨论】:

  • 这实际上删除了 class 类项目,但删除了您提到的 id 参数。有什么解决方法吗?
猜你喜欢
  • 2018-12-27
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 2014-12-03
  • 2013-06-05
  • 2013-03-22
相关资源
最近更新 更多