如何将动态添加的属性(使用metaClass)转换为JSON

时间:2012-04-19 06:02:46

标签: json grails groovy

我正在尝试向类的每个实例添加动态属性,然后将这些对象的列表转换为json。请参阅下面的示例

class Author{
    String name
    static hasMany=[books:Book]
}

class Book{
    String title
    static belongsTo=[author:Author]
}

my controller

class AuthorController{
    def listAuthors={
        def authorsList=Author.list()
        def details=['address':'xyz', phone:'123']
        authorList.each{
            it.metaClass.getDetails={->details}
        }

        render authorsList as JSON
    }
}

现在我希望这个动态添加的“details”属性也可以呈现为JSON。请帮忙

1 个答案:

答案 0 :(得分:1)

如果不是创建一个setter,你只需要添加一个属性:

it.metaClass.details = details

如果没有,您的最佳途径可能是从authorsList创建地图列表(将详细信息键/值对添加到每个地图),然后将其序列化......