All Downloads are FREE. Search and download functionalities are using the official Maven repository.

yakworks.json.jackson.GroovyModule.groovy Maven / Gradle / Ivy

/*
* Copyright 2022 original authors
* SPDX-License-Identifier: Apache-2.0
*/
package yakworks.json.jackson

import groovy.transform.CompileStatic

import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.databind.JsonSerializer
import com.fasterxml.jackson.databind.SerializerProvider
import com.fasterxml.jackson.databind.module.SimpleModule

/**
 * Jackson "Module" (normal java Service that gets loaded with ServiceLoader)
 * that will serialize GStrings properly with groovy
 */
@CompileStatic
class GroovyModule  extends SimpleModule {

    GroovyModule() {
        addSerializer(GString, new GStringJsonSerializer())
    }

    static class GStringJsonSerializer extends JsonSerializer {

        @Override
        void serialize(GString value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            if (value == null) {
                jsonGenerator.writeNull()
            } else {
                jsonGenerator.writeString(value.toString())
            }
        }

        @Override
        Class handledType() {
            return GString;
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy