[
https://issues.apache.org/jira/browse/GROOVY-8849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16676503#comment-16676503
]
Paul King commented on GROOVY-8849:
---
I'd recommend using the
[JsonGenerator.Options.addConverter|http://docs.groovy-lang.org/latest/html/api/groovy/json/JsonGenerator.Options.html#addConverter-java.lang.Class-groovy.lang.Closure-]
method.
It let's you do this for example:
{code:java}
class Pojo {
int testOne
int testTwo
}
def generator = new groovy.json.JsonGenerator.Options()
.addConverter(Pojo) { Pojo p -> p.properties
.findAll{ it.key != 'class' }
.collectEntries{ k, v -> [k.replaceAll(/([A-Z])/, /_$1/).toLowerCase(), v]
} }
.build()
def pojo = new Pojo(testOne: 1, testTwo: 1)
assert generator.toJson(pojo) == '{"test_two":1,"test_one":1}'
{code}
> Provide a way to change property names when converting Pojo to JSON
> ---
>
> Key: GROOVY-8849
> URL: https://issues.apache.org/jira/browse/GROOVY-8849
> Project: Groovy
> Issue Type: New Feature
> Components: JSON
>Affects Versions: 2.5.0
>Reporter: Raviteja Lokineni
>Priority: Critical
>
> I want to be able to override with something like the annotation JsonProperty
> to override how a property name should be serialized to Json. If the feature
> is already there then please add documentation. For example:
> {code:java}
> @JsonProperty("test_one")
> int testOne
> @JsonProperty("test_two")
> int testTwo{code}
> More information on the example:
> [Jackson-Annotations|https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations]
>
> h1. Reproducible Code
> h2. Pojo.groovy
> {code:java}
> class Pojo {
> int testOne
> int testTwo
> }{code}
> h2. Sample Run:
> {code:java}
> JsonOutput.toJson(new Pojo(testOne: 1, testTwo: 1))
> // Output
> // ===> {"testTwo":1,"testOne":1}
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)