On Tuesday, 4 April 2017 15:33:19 UTC+3, Egon wrote:
>
> On Tuesday, 4 April 2017 13:54:34 UTC+3, dc0d wrote:
>>
>> Target: Assuming we want to deserialize some JSON dynamically and we want
>> to unmarshal some fields using specific unmarshaling code (a
>> certain UnmarshalJSON). The problem is using something like
>> map[string]interface{} there is no way to specify that.
>>
>> Thought Experiment: I like to have something like:
>>
>> ourUnmarshaler.AddField("name", func() json.Unmarshaler /* default field
>> creator for unmarshaling */, /* other options like omitempty */)
>>
>> or perhaps possibility of using:
>>
>> map[string]struct{
>> Name string
>> Constructor func() json.Unmarshaler
>> OmitEmpty bool
>> String bool
>> // ...
>> }
>>
>> That would be the ideal thing. But is it possible to do so with current
>> builtin tools? Or some package?
>>
>
> https://play.golang.org/p/EP2F-__URO
>
> If you need the field names to construct the data, do a separate pass over
> the data.
>
Also you can now use the Decoder as a
tokenizer https://golang.org/pkg/encoding/json/#Decoder.Token, so
implementing custom unmarshaling isn't that difficult.
>
>
>>
>> Other notes:
>> I've found gabs <https://github.com/Jeffail/gabs> but it does not what I
>> want. Some of my specific cases are big int64 values which should
>> serialized as string because they get converted to ugly float things and
>> some custom parsing for specific strings.
>>
>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.