groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kostas Saidis <sai...@gmail.com>
Subject Re: JsonOutput serialization options feature
Date Sun, 11 Sep 2016 18:51:21 GMT
+1, definitely!

If it is possible, the dateFormat method should also accept an optional 
Locale parameter (as mentioned in TODO comment in the source), with a 
default value of Locale.US.

Cheers,
Kostas

On 11/9/2016 6:59 πμ, John Wagenleitner wrote:
> Groovy Json users,
>
> I recently worked on a project where it would have been helpful if 
> JsonOutput/JsonBuilder/StreamingJsonBuilder had options for 
> controlling the output.  I noticed there were some open tickets [1] 
> for feature requests around this so decided to try to add some options 
> to control the serialization and have proposed a pull request 
> (https://github.com/apache/groovy/pull/371).
>
> Just wanted to poll those that use the Json generating features in 
> Groovy to see if you think these options would be useful and would 
> welcome any code review for those that would be interested in 
> reviewing the PR.  For a quick overview I've included a sample below [2].
>
> [1]
> GROOVY-6699: JSON slurper ability to ignore propertie/field names (at 
> least the serializing part)
> GROOVY-6854: JsonOutput should be configurable with ISO 8601 UTC time 
> zone instead of GMT
> GROOVY-7682: JsonBuilder or JsonOutput incompatible with JodaTime (for 
> now via a closure converter)
> GROOVY-7780: JSONBuilder/JSONSlurper: Option to Only Include NonNull 
> values
> GROOVY-7858: Make JsonBuilder configurable to not write entries with 
> null values
>
> [2]
> import groovy.json.*
>
> def options = JsonOutput.options()
>          .excludeNulls()
>          .excludeFieldsByName('make','country','record')
>          .excludeFieldsByType(Number)
>          .addConverter(URL) { url ->'"http://groovy-lang.org"' }
>
> StringWriter writer =new StringWriter()
> StreamingJsonBuilder builder =new StreamingJsonBuilder(writer, options)
>
> builder.records {
>      car {
>          name'HSV Maloo' make'Holden' year2006 country'Australia' homepagenew URL('http://example.org')
>          record {
>              type'speed' description'production pickup truck with speed of 271kph' }
>      }
> }
>
> assert writer.toString() =='{"records":{"car":{"name":"HSV 
> Maloo","homepage":"http://groovy-lang.org"}}}'



Mime
View raw message