That does indeed work, but requires a call to "NewFoo" every time i marshal (invoking an allocation and subsequent GC). The application I am building is extremely memory intensive so I would like to be able to avoid that.
I am totally willing to put in the work on the standard library Marshaller, as enabling a JSON renderer flag like "renderempty" doesn't require developers to go track down every marshal invocation for a type to ensure the rendered JSON matches what the web guys want. Basically, I am waiting for some of the higher ups to say "no we won't support that patch" or "sure, go for it." Thank you, Kris On Thursday, March 30, 2017 at 9:10:38 AM UTC-6, C Banning wrote: > > Why not provide a "NewFoo() *Foo" function instead? > https://play.golang.org/p/GE8cMgwe24 > > On Monday, March 27, 2017 at 10:42:46 AM UTC-6, traetox wrote: >> >> Hello all, >> >> I have swept through the list and gone through the pkg/encoding/json >> package and _believe_ I haven't missed anything, but am not 100% sure. >> >> When encoding structures into JSON which contain slices/arrays/maps my >> frontend devs consistently complain about the encoding of empty or nil >> members which they have to do a little extra work to deal with. >> >> For example, structure is defined as: >> >> type Foo Struct { >> Bar []string >> Baz map[string]int >> } >> >> if any of the members of the struct (Bar, Baz) are not initialized, or >> empty the encoding is: >> >> { >> "Bar": null, >> "Baz": null, >> } >> >> What they want is : >> >> { >> "Bar": [], >> "Baz": {}, >> } >> >> The frontend guys complain because they can't just hand that structure to >> some of their libraries. I have been getting around this by defining >> custom marshallers for each type which detect empty or null items and >> marshal them out as '[]' and '{}' respectively. I know the other option is >> to just ensure an empty map/slice/array is initialized but invoking >> potential allocations and GC seems wasteful. Is there a json directive >> that can be attached that tells the standard library marshaller to always >> render empty items into a '[]', '{}', etc. similar to the *omitempty * >> directive? >> >> If not, would there be any support for me to propose, develop, and submit >> a patch to do so? >> >> As always, thank you all for the great work on Golang and the standard >> library! >> Kris >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.