json - Grails JSON编码

标签 json grails

我有一个与另一个域对象具有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/

相关文章:

json - 计算数组中多个项目的出现次数

每隔 x 分钟导入一个本地 JSON 文件的 JavaScript 方法

grails - 具有Spring安全性的Grails 2:defaultFailureUrl不起作用

hibernate - 多数据源配置

javascript - 有效的 JSON 会破坏 HandlebarsJS 和 $.getJSON 调用

json - 如何正确分组数据以获得树状结构?

json - 如何在flutter中将Json数据传递到另一个屏幕

hibernate - Grails命名查询NOT IN

java - IntelliJ IDEA 构建未完成的 Grails war

grails - 创建一个标准主题