groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Wagenleitner <john.wagenleit...@gmail.com>
Subject Re: JsonOutput serialization options feature
Date Thu, 22 Sep 2016 23:11:45 GMT
On Wed, Sep 21, 2016 at 3:22 AM, Graeme Rocher <graeme.rocher@gmail.com>
wrote:

> Hi John,
>
> Looks very useful, so +1
>
> One thing that would also be useful is to be able to configure the
> ability to disable unicode encoding. It doesn't seem to be recommended
> for all circumstances. See:
>
> http://stackoverflow.com/questions/12271547/shouldnt-json-
> stringify-escape-unicode-characters?noredirect=1&lq=1
>
> And it is blocking resolution of this issue:
>
> https://github.com/grails/grails-views/issues/71
>
> Thoughts?
>


Hi Graeme,

Good suggestion, and also seems to be a requested feature in GROOVY-6975
[1].  So seems worthwhile to add a disableUnicodeEscaping or
disableNonAsciiEscaping option.  I'll see if I can add that to the PR soon.


[1] https://issues.apache.org/jira/browse/GROOVY-6975





>
> On Mon, Sep 12, 2016 at 12:02 AM, John Wagenleitner
> <john.wagenleitner@gmail.com> wrote:
> > On Sun, Sep 11, 2016 at 11:51 AM, Kostas Saidis <saikos@gmail.com>
> wrote:
> >>
> >> +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
> >>
> >
> >
> > Thanks for pointing that out, I had forgot about that.  I added a new
> method
> > that accepts both a date format string and Locale.
> >
> >
> >>
> >>
> >> 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'
> >>         year 2006
> >>         country 'Australia'
> >>         homepage new 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"}}}'
> >>
> >>
> >
>
>
>
> --
> Graeme Rocher
>

Mime
View raw message