首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让JSON.registerObjectMarshaller()在Grails1.3.7中创建自定义JSON

无法让JSON.registerObjectMarshaller()在Grails1.3.7中创建自定义JSON
EN

Stack Overflow用户
提问于 2011-08-15 02:30:29
回答 1查看 3.3K关注 0票数 3

我希望在我的JSON输出中包含一个类(帐户)的瞬态属性。对我来说,最好的方法是在Bootstrap.groovy中使用Bootstrap.groovy()为类创建一个自定义的JSON结构,但是我似乎无法让它工作起来。下面是我的Bootstrap.groovy代码:

代码语言:javascript
复制
import grails.converters.deep.JSON
import stocks.Account

class BootStrap {

def init = { servletContext ->

    JSON.registerObjectMarshaller(Account, {
        println("test")
        def returnArray = [:]
        returnArray['email'] = it.email
        returnArray['test'] = "success"
        return returnArray
    })

}

def destroy = {
}

}

下面是我的AccountController.groovy代码:

代码语言:javascript
复制
def jsonTest = {
    def account = Account.findById('1')
    render account as JSON
}

下面是我的输出,它的作用就好像我根本没有调用JSON.registerObjectMarshaller()一样:

代码语言:javascript
复制
{"class":"stocks.Account","id":1,"email":"ian...","firstName":"Ian"}

一些我试过但似乎没有帮助的事情:

在clean

  • Increasing上
  1. Grails优先于1常规的JSON转换器而不是深转换器
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-15 06:24:49

您使用的是哪个版本的grails?

它对我在Bootstrap.groovy中有以下内容起了作用

代码语言:javascript
复制
import grails.converters.JSON
...
JSON.registerObjectMarshaller(Bank) {
        def returnArray = [:]
        returnArray["name"] = it.name
        return returnArray
}

以下域类

代码语言:javascript
复制
class Bank implements Serializable {

    String name
}

控制器中的下列代码

代码语言:javascript
复制
import grails.converters.JSON
... 
def jsonTest = {
    def account = Bank.findById('1')
    render account as JSON
}

并返回以下JSON:

代码语言:javascript
复制
{"name":"Niko Securities"}

注意:我只在Bootstrap和控制器中使用常规的JSON转换器,所以可能会检查您在两个地方都使用相同的转换器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7061206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档