gpt4 book ai didi

json - 如何用自己的JSON转换器替换

转载 作者:行者123 更新时间:2023-12-02 14:50:46 24 4
gpt4 key购买 nike

我希望使用JACKSON而不是grails JSON,而无需更改自动脚手架 Controller 。

是否可以用另一个无缝替换当前的grails JSON转换器?

除了AbstractConverter之外,是否有任何其他类可以实现?

最佳答案

应该很简单。您只需扩展AbstractConverter即可:

render result as JackSON

像这样的东西***:
***取自此处: https://github.com/sjhorn/grails-jackson/blob/master/src/groovy/com/hornmicro/JackSON.groovy
class JackSON extends AbstractConverter {
Object target

public JackSON() {

}

public JackSON(Object target) {
this()
setTarget(target)
}

public void render(Writer out) throws ConverterException {
try {
ObjectMapper mapper = new ObjectMapper()
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
mapper.configure(JsonGenerator.Feature.FLUSH_PASSED_TO_STREAM, false)
mapper.configure(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT, false)
mapper.writeValue(out, target)
} catch(e) {
throw new ConverterException(e)
}

try {
out.flush()
out.close()
} catch (Exception e) {
log.warn("Unexpected exception while closing a writer: " + e.getMessage())
}
}

public void render(HttpServletResponse response) throws ConverterException {
response.setContentType(GrailsWebUtil.getContentType("application/json", "UTF-8"));
try {
render(response.getWriter())
} catch (IOException e) {
throw new ConverterException(e)
}
}

public Object getWriter() throws ConverterException {
throw new ConverterException("Not Implemented")
}

public void convertAnother(Object o) throws ConverterException {
throw new ConverterException("Not Implemented")
}

public void build(Closure c) throws ConverterException {
throw new ConverterException("Not Implemented")
}

public ObjectMarshaller lookupObjectMarshaller(Object target) {
return null
}

public void setTarget(Object target) {
this.target = target
}
}

关于json - 如何用自己的JSON转换器替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31043431/

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