Skip to content

Conversation

@greensea
Copy link

In encoding/json, there is MarshalJSON() and UnmarshaslJSON() for RawMessage. Missing this two method leads to different behavior while Marshal() jsoniter.RawMessage using std json package.

Example code below

package main import ( "fmt" "encoding/json" "github.com/json-iterator/go" ) type T struct { Msg jsoniter.RawMessage } func main() { var j T raw := []byte(`{ "Msg": {"Foo": "Bar"}}`) jsoniter.Unmarshal(raw, &j) b1, _ := json.Marshal(j.Msg) fmt.Printf("%s\n", b1) /// Expect `{"Foo": "Bar"}` but got `"IHsiRm9vIjogIkJhciJ9"` b2, _ := jsoniter.Marshal(j.Msg) fmt.Printf("%s\n", b2) } 
In encoding/json, there is MarshalJSON() and UnmarshaslJSON() for RawMessage. Missing this two method leads to different behavior while Marshal() jsoniter.RawMessage using std json package. Example code below ``` package main import ( "fmt" "encoding/json" "github.com/json-iterator/go" ) type T struct { Msg jsoniter.RawMessage } func main() { var j T raw := []byte(`{ "Msg": {"Foo": "Bar"}}`) jsoniter.Unmarshal(raw, &j) b1, _ := json.Marshal(j.Msg) fmt.Printf("%s\n", b1) /// Expect `{"Foo": "Bar"}` but got `"IHsiRm9vIjogIkJhciJ9"` b2, _ := jsoniter.Marshal(j.Msg) fmt.Printf("%s\n", b2) } ```
@codecov
Copy link

codecov bot commented Jul 14, 2020

Codecov Report

Merging #474 into master will decrease coverage by 0.50%.
The diff coverage is 22.22%.

Impacted file tree graph

@@ Coverage Diff @@ ## master #474 +/- ## ========================================== - Coverage 86.64% 86.14% -0.51%  ========================================== Files 41 41 Lines 5100 5109 +9 ========================================== - Hits 4419 4401 -18  - Misses 540 566 +26  - Partials 141 142 +1 
Impacted Files Coverage Δ
adapter.go 81.15% <22.22%> (-8.85%) ⬇️
reflect_struct_decoder.go 82.68% <0.00%> (-2.67%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a1ca083...6f96243. Read the comment docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant