我有一个使用def json = object as JSON
转换的grails对象。在我转换之后,我想再向JSON添加一个名为pin
的属性,如下所示。
[location:[lat:23.03, lon:72.58]]
到目前为止,只有这样做的方法似乎如下
使用grails.converters.json执行此操作的其他任何方法?我尝试过使用Gson,但我不想去那条路,因为我收到很多循环引用错误
答案 0 :(得分:1)
试试这个:
domainInstance.properties + [pin: pinInstance] as JSON
答案 1 :(得分:0)
我最近需要做类似的事情。一些警告:
的Marshaller:
class MongodbObjectMarshaller implements ObjectMarshaller<JSON> {
@Override
boolean supports(Object o) { return o?.properties?.dbo }
@Override
void marshalObject(Object obj, JSON converter) throws
ConverterException {
Map propertiesToOutput = obj.properties.dbo
propertiesToOutput.remove("_id") //don't print org.bson.types.ObjectId
propertiesToOutput.remove("version") //don't print gorm verson column
converter.build {
_id obj.id.toString()
propertiesToOutput.each{ entry ->
"$entry.key" entry.value
}
}
}
}
marshaller做了什么,它允许在JSON输出任何域类的属性。 obj.properties.dbo
对于MongoDB来说是特殊的,但对于常规域类,您只需抓取属性并排除您不需要的属性。
然后在我的控制器中,这有效:
domainInstance.pin = [location:[lat:23.03, lon:72.58]]
def content = tacticalCard as JSON
因为我的编组现在拿起了pin属性并将其打印出来。