gpt4 book ai didi

json - 实例上的 Grails 转换器 JSON 编码

转载 作者:行者123 更新时间:2023-12-02 14:41:42 25 4
gpt4 key购买 nike

在 Grails JSON Converters 上下文中,希望转换作为 MongoDB 查询结果的 JSON 数据(结果没有关联的域对象)。

其中一个字段需要转换(即具有货币符号的字段需要通过剥离货币符号转换为数字)。

在这种情况下,是否可以仅将 marshaller 应用于此实例数据。

使用:

JSON.registerObjectMarshaller(JSONObject)

正在全局应用于代码中所有其他位置的所有 JSONObject。

我不希望为此目的创建域对象,而是希望使用 grails 转换器对象,例如 JSONObject 等。

最佳答案

是的,您可以通过使用命名编码器轻松实现它。即在 Bootstrap.groovy 中使用相同的命名空间注册你的编码器:

JSON.createNamedConfig("foo") {
it.registerObjectMarshaller(new CustomDataMarshaller)
}

编码(marshal)代码:
class CustomDataMarshaller implements ObjectMarshaller<JSON> {

@Override
boolean supports(Object object) {
return object instanceof Currency // Or directly BasicDbObject if you want to marshall the whole MongoDb result
}

@Override
void marshalObject(Object object, JSON converter) throws ConverterException {
// Convert here
}
}

现在只在你想使用它的地方使用这个编码器,即对于从 MongoDB 调用返回的任何特定实例或结果:
class MyController {

def test() {
def data // Any data as you want to marshal

JSON.use("foo") {
respond(data)
// OR
// render(data as JSON)
}
}
}

关于json - 实例上的 Grails 转换器 JSON 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com