如何只发送一个类的某些属性作为json

时间:2013-05-15 12:39:06

标签: json grails

我有一个简单的动作,例如:

def showSomething() {
   render Color.get(params.id) as JSON
}

这会将Color类中的所有属性呈现为JSON。但是,如果我只想呈现两个属性,例如colorName and shade

,该怎么办?

3 个答案:

答案 0 :(得分:2)

这很简单:

def relevantProperties = ["colorName","shade"]
def color = Color.get(params.id)
def reply = relevantProperties.collectEntries { property ->
    [property, color[property]]
}

render reply as JSON

你在: - )

答案 1 :(得分:2)

如果要在每次渲染对象时渲染相同的属性,Gjordis都有正确的选项。但是,您可以这样做:

Color color = Color.get(params.id)
render ([colorName: color.colorName, shade: color.shade] as JSON)

答案 2 :(得分:1)

import grails.converters.JSON
class BootStrap {
    def init = {servletContext ->
        JSON.registerObjectMarshaller(Color) {
            def returnArray = [:]
            returnArray['shade'] = it.shade
            returnArray['colorName'] = it.colorName
            return returnArray
    }

}

有人可以纠正我,我没有用过grails。但是重写转换中调用的函数是关键。