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

标签 json grails jackson

我希望使用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/

相关文章:

javascript - 踢球时的等级问题| Discord.js

mongodb - 使用 GORM MongoDB 保留动态 groovy 属性

grails - Grails:查询hasMany关联

java - 反序列化期间重复的字段

php - 如何将JSON对象缓存到单个文件中以加快页面加载时间

sql - Delphi:访问 JSON 数组中的 JSON 对象

jquery 自动完成与 json 响应

java - 使 JSONObject 可序列化

spring - 带有 Spring 的 Jersey 2 中的自定义 Jackson ObjectMapper

java - JsonGenerator 将 json 数据附加到文件而不覆盖