diff --git a/data_navigator.go b/data_navigator.go index e6867a4..ab71ae8 100644 --- a/data_navigator.go +++ b/data_navigator.go @@ -30,6 +30,8 @@ func recurse(value interface{}, head string, tail []string) interface{} { log.Fatalf("Error accessing array: %v", err) } return readArray(value.([]interface{}), index, tail) + case nil: + return nil default: return readMap(value.(map[interface{}]interface{}), head, tail) } diff --git a/data_navigator_test.go b/data_navigator_test.go index 21fddd9..65c1814 100644 --- a/data_navigator_test.go +++ b/data_navigator_test.go @@ -31,11 +31,15 @@ func TestReadMap_simple(t *testing.T) { assertResult(t, 2, readMap(parsedData, "b", []string{"c"})) } -func TestReadMap_array(t *testing.T) { +func TestReadMap_key_doesnt_exist(t *testing.T) { + assertResult(t, nil, readMap(parsedData, "b.x.f", []string{"c"})) +} + +func TestReadMap_with_array(t *testing.T) { assertResult(t, 4, readMap(parsedData, "b", []string{"d", "1"})) } -func TestReadMap_array_out_of_bounds(t *testing.T) { +func TestReadMap_with_array_out_of_bounds(t *testing.T) { assertResult(t, nil, readMap(parsedData, "b", []string{"d", "3"})) }