tomaszarmata
9 years agoContributor
Building json using JsonOutput
Hello,
I need to produce json looks like:
{ "method": "GET", "path": "news", "synchronization-type": 2 }
I have tried to do somethink like this:
import groovy.json.JsonOutput def synch = new Synchronize() synch.method = "GET" synch.path = "news" synch.synchronizationType = 2 def json = JsonOutput.toJson(synch) return JsonOutput.prettyPrint(json) class Synchronize { String method = null String path = null Integer synchronizationType = null }
But like You can see there is synchronizationType but I need to map this to synchronization-type. Do You have any suggestions how to do that?
Here one way of doing using jackson libraries:
import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature class Synchronize { String method String path @JsonProperty("synchronization-type") int synchronizationType } def synch = new Synchronize(method:'GET', path:'news', synchronizationType:2) ObjectMapper mapper = new ObjectMapper() mapper.configure(SerializationFeature.INDENT_OUTPUT,true) println(mapper.writeValueAsString(synch))
Get the depenency libraries from here
OUTPUT
{ "method" : "GET", "path" : "news", "synchronization-type" : 2 }
Another simplest way to produce the same output(without having to use java object ) and without additional third party libraries
import groovy.json.JsonBuilder def json = new JsonBuilder() json { method 'GET' path 'news' "synchronization-type" 2 } println json.toPrettyString()
You may also look at the link for array example