diff --git a/ast/encode_test.go b/ast/encode_test.go index bbcc709e3..a333b0688 100644 --- a/ast/encode_test.go +++ b/ast/encode_test.go @@ -169,15 +169,15 @@ func (j *SortableNode) MarshalJSON() ([]byte, error) { } func TestMarshalSort(t *testing.T) { - var data = `{"d":3,"a":{"c":1,"b":2}}` + var data = `{"d":3,"a":{"c":1,"b":2},"e":null}` var obj map[string]*SortableNode require.NoError(t, json.Unmarshal([]byte(data), &obj)) out, err := json.Marshal(obj) require.NoError(t, err) - require.Equal(t, `{"a":{"b":2,"c":1},"d":3}`, string(out)) + require.Equal(t, `{"a":{"b":2,"c":1},"d":3,"e":null}`, string(out)) out, err = json.Marshal(obj) require.NoError(t, err) - require.Equal(t, `{"a":{"b":2,"c":1},"d":3}`, string(out)) + require.Equal(t, `{"a":{"b":2,"c":1},"d":3,"e":null}`, string(out)) } func BenchmarkEncodeRaw_Sonic(b *testing.B) { diff --git a/ast/node.go b/ast/node.go index b888684d7..990908ddd 100644 --- a/ast/node.go +++ b/ast/node.go @@ -844,6 +844,7 @@ func (self *Node) MapUseNode() (map[string]Node, error) { // return self.toGenericObjectUsePair() // } +//go:nocheckptr func (self *Node) unsafeMap() (*linkedPairs, error) { if err := self.skipAllKey(); err != nil { return nil, err @@ -866,7 +867,7 @@ func (self *Node) SortKeys(recurse bool) error { } else { var err error err2 := self.ForEach(func(path Sequence, node *Node) bool { - it := self.itype() + it := node.itype() if it == types.V_ARRAY || it == types.V_OBJECT { err = node.SortKeys(recurse) if err != nil {