Skip to content

Commit

Permalink
fix panic
Browse files Browse the repository at this point in the history
  • Loading branch information
laurynasusas committed Jan 11, 2022
1 parent 2884d9a commit 9e5bc9d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 27 deletions.
35 changes: 15 additions & 20 deletions jordered.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,9 @@ func (m *OrderedMap) UnmarshalJSON(data []byte) error {
if err != nil {
return err
}

var value interface{}
if omValue.raw != nil {
value = omValue.raw
} else if omValue.rawArr != nil {
value = omValue.rawArr
} else {
value = omValue
}
m.ordered = append(m.ordered, element{
key: key,
value: value,
value: getValue(omValue),
})
}
} else if objType == "array" {
Expand All @@ -86,23 +77,27 @@ func (m *OrderedMap) UnmarshalJSON(data []byte) error {
if err != nil {
return err
}
var value interface{}
if omValue.raw != nil {
value = omValue.raw
} else if omValue.rawArr != nil {
value = omValue.rawArr
} else {
value = omValue
}

m.rawArr = append(m.rawArr, value)
m.rawArr = append(m.rawArr, getValue(omValue))
}
}
}

return nil
}

func getValue(omv *OrderedMap) interface{} {
switch {
case omv == nil:
return nil
case omv.raw != nil:
return omv.raw
case omv.rawArr != nil:
return omv.rawArr
default:
return omv
}
}

func (m *OrderedMap) MarshalJSON() ([]byte, error) {
if m.raw != nil {
return json.Marshal(m.raw)
Expand Down
15 changes: 8 additions & 7 deletions jordered_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

const (
mapJson = `{"one":{"hendrik":"sedin"},"two":{"daniel":"sedin"},"three":[[1,"2","three"],"vancouver",{"teamName":"canucks","color":"blue","weapon":"stick"}],"four":"hockey"}`
mapJson = `{"one":{"hendrik":"sedin"},"two":{"daniel":"sedin"},"three":[[1,"2","three"],"vancouver",{"teamName":"canucks","color":"blue","weapon":"stick"}],"four":"hockey","five":null}`
arrJson = `[{"hendrik":"sedin"},{"daniel":"sedin"},["vancouver","canucks"],"hockey"]`
)

Expand All @@ -26,12 +26,13 @@ func TestOrderedMap(t *testing.T) {
t.Errorf("Bad json marshall expected %s, got %s", mapJson, string(bb))
}

keys := []string{"one", "two", "three", "four"}
keys := []string{"one", "two", "three", "four", "five"}
values := [][]byte{
[]byte(`{"hendrik":"sedin"}`),
[]byte(`{"daniel":"sedin"}`),
[]byte(`[[1,"2","three"],"vancouver",{"teamName":"canucks","color":"blue","weapon":"stick"}]`),
[]byte(`"hockey"`),
[]byte("null"),
}

// Test iterator and order
Expand All @@ -52,7 +53,7 @@ func TestOrderedMap(t *testing.T) {

ii++
}
if ii != 4 {
if ii != len(values) {
t.Errorf("Did not find all the values (or two many). Expected %v, Got %v", 4, ii)
}

Expand All @@ -75,7 +76,7 @@ func TestOrderedMap(t *testing.T) {

ii++
}
if ii != 4 {
if ii != len(values) {
t.Errorf("Did not find all the values (or two many). Expected %v, Got %v", 4, ii)
}
om.Reset()
Expand All @@ -100,7 +101,7 @@ func TestOrderedMap(t *testing.T) {

ii++
}
if ii != 5 {
if ii != len(values) {
t.Errorf("Did not find all the values (or two many). Expected %v, Got %v", 5, ii)
}

Expand Down Expand Up @@ -131,12 +132,12 @@ func TestOrderedMap(t *testing.T) {

err = json.Unmarshal([]byte(arrJson), om)
if err != nil {
t.Error("Marshalling failed: %v", err)
t.Error("Marshalling failed: %w", err)
}

bb, err = json.Marshal(om)
if err != nil {
t.Error("Marshalling failed: %v", err)
t.Error("Marshalling failed: %w", err)
}

if string(bb) != arrJson {
Expand Down

0 comments on commit 9e5bc9d

Please sign in to comment.