Grails视图中的名称-值对

Grails视图中的名称-值对,grails,grails3,Grails,Grails3,我有这样一个头类: class Header { String name String value } 我有一个类似这样的想法: model { Set<Header> headers } json { headers .... } { "headers": { "Host": "xyz.com", "Other-Header": "da value" } } 我尝试手动生成JSON值,但Grails只是将其放在引号中。所以这不起作用。

我有这样一个头类:

class Header {
  String name
  String value
}
我有一个类似这样的想法:

model {
  Set<Header> headers
}

json {
  headers ....
}
{
  "headers": {
    "Host": "xyz.com",
    "Other-Header": "da value"
  }
}
我尝试手动生成JSON值,但Grails只是将其放在引号中。所以这不起作用。

首先将集合转换为贴图:


这是一个不寻常的方式来模拟你正在做什么,但它可以使工作。您是否确实知道集合中永远不会包含超过1个具有相同名称属性的标题?如果不知道,您对发生冲突的渲染输出有何要求?@JeffScottBrown重复标题字段是一个有趣的场景。我的想法是,对于实现者来说,利用能够获得特定值而无需迭代非常简单。我想我将实现下面的答案和标题对象的典型列表。
model {
    Set<Header> headers
}

json {
    headers renderHeaders(email.headers)
}

static Map<String, String> renderHeaders(Set<Header> headers) {
    Map<String, String> res = [:]
    for (Header header : headers) {
        res[header.name] = header.value
    }
    return res
}