我有一個簡單的動作,如這樣的:如何只發送一類的某些屬性,JSON
def showSomething() {
render Color.get(params.id) as JSON
}
,這會使得Color類爲JSON的所有屬性。但是,如果我只想渲染兩個屬性,例如colorName and shade
,該怎麼辦?
我有一個簡單的動作,如這樣的:如何只發送一類的某些屬性,JSON
def showSomething() {
render Color.get(params.id) as JSON
}
,這會使得Color類爲JSON的所有屬性。但是,如果我只想渲染兩個屬性,例如colorName and shade
,該怎麼辦?
如果您希望每次呈現對象時渲染相同的屬性,Gjordis都有正確的選項。但是,您可以簡單地這樣做:
Color color = Color.get(params.id)
render ([colorName: color.colorName, shade: color.shade] as JSON)
這是非常簡單的:
def relevantProperties = ["colorName","shade"]
def color = Color.get(params.id)
def reply = relevantProperties.collectEntries { property ->
[property, color[property]]
}
render reply as JSON
,並有你:-)
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。但是重寫轉換中調用的函數是關鍵。
這缺乏一定的靈活性,不是嗎? – fabiangebert
它將轉換器註冊到一個類中。你只需要做一次。之後,每次調用render ...時都會返回相同的值作爲JSON – Gjordis