我有一个与另一个域对象具有1-M关系的域对象,例如
人1-> M语言
我已经注册了一个JSON对象编码器来编码Person对象。我正在处理的一个用例以表格格式显示“人”,默认情况下显示主要语言。
我遇到的问题是,当用户生成语言搜索时,我想显示该人的匹配语言,而不是主要语言。
我遇到的问题是,我不知道如何访问在编码对象中搜索的语言,因此,我无法确定要以表格格式在JSON中呈现的匹配语言。
这是我为Person提供的示例代码:
JSON.registerObjectMarshaller(Person) {
def returnArray = [:]
returnArray['id'] = it.id
returnArray['name'] = it.displayName?:""
//I would like to be able to get the language matching a search param here
//when a search has been carried out
returnArray['language'] = it.primaryLanguage?:""
}
目前,我要解决的问题是要有一个PersonWrapper,在其中我要在构造函数中传递搜索项,为包装器注册一个对象编码器,并在包装器中进行过滤。
这对我来说似乎很浪费,因为我需要遍历域结果并为每个实例创建一个包装器。
任何建议将不胜感激。
最佳答案
也许您正在寻找类似的东西:
def filterLang = Language.findByCode("de")
// search for persons having the filter language assigned
def foundPersons = Persong.executeQuery("select p from Person as p inner join p.languages as lang where lang = :filterLang",[filterLang : filterLang])
def json = []
foundPersons .each {
json << [id: it.id, name: it.name, language: filterLang]
}
render json as JSON
关于json - Grails JSON编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119980/