From 3b0abe02e24222714c286de79ee3ac61e27e0b0a Mon Sep 17 00:00:00 2001 From: wangsongyan <1104237534@qq.com> Date: Wed, 13 Mar 2019 17:20:18 +0800 Subject: [PATCH] unmarshal *Json into an interface value --- simplejson_go10.go | 9 +++++++++ simplejson_go11.go | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/simplejson_go10.go b/simplejson_go10.go index c9151e9..39b9077 100644 --- a/simplejson_go10.go +++ b/simplejson_go10.go @@ -22,6 +22,15 @@ func (j *Json) UnmarshalJSON(p []byte) error { return json.Unmarshal(p, &j.data) } +// To unmarshal *Json into an interface value +func (j *Json) Unmarshal(val interface{}) error { + p, err := j.Encode() + if err != nil { + return err + } + return json.Unmarshal(p, val) +} + // Float64 coerces into a float64 func (j *Json) Float64() (float64, error) { switch j.data.(type) { diff --git a/simplejson_go11.go b/simplejson_go11.go index 1c47953..82b8469 100644 --- a/simplejson_go11.go +++ b/simplejson_go11.go @@ -18,6 +18,17 @@ func (j *Json) UnmarshalJSON(p []byte) error { return dec.Decode(&j.data) } +// To unmarshal *Json into an interface value +func (j *Json) Unmarshal(val interface{}) error { + p, err := j.Encode() + if err != nil { + return err + } + dec := json.NewDecoder(bytes.NewBuffer(p)) + dec.UseNumber() + return dec.Decode(val) +} + // NewFromReader returns a *Json by decoding from an io.Reader func NewFromReader(r io.Reader) (*Json, error) { j := new(Json)