diff --git a/jsonpath.go b/jsonpath.go index 6d8942a..a06c030 100644 --- a/jsonpath.go +++ b/jsonpath.go @@ -18,6 +18,12 @@ func (d DoesNotExist) Error() string { var invalidObjError = errors.New("invalid object") var pathDelimiter = "." +func SetDelimiter(delimiter string) { + if len(delimiter) > 0 { + pathDelimiter = delimiter + } +} + func tokenizePath(path string) ([]string, error) { var tokens []string for _, stem := range strings.Split(path, pathDelimiter) { diff --git a/jsonpath_test.go b/jsonpath_test.go index 8d52a2f..41b2fef 100644 --- a/jsonpath_test.go +++ b/jsonpath_test.go @@ -10,6 +10,7 @@ var data = map[string]interface{}{ "user": map[string]interface{}{ "firstname": "seth", "lastname": "rogen", + "address.local": "my temp address", }, "age": 35, "filmography": map[string]interface{}{ @@ -50,6 +51,16 @@ func TestGet(t *testing.T) { if _, ok:= err.(DoesNotExist); result != nil || !ok { t.Errorf("does not handle non-existant path correctly") } + + SetDelimiter("|") + result, err = Get(data, "user|address.local") + if err != nil { + t.Errorf("failed to get user|address.local") + } + if result != "my temp address" { + t.Errorf("wrong get value, wanted %v, got %v", "my temp address", result) + } + SetDelimiter(".") } func TestSet(t *testing.T) { @@ -191,4 +202,4 @@ func TestErrors(t *testing.T) { if _, ok := err.(DoesNotExist); !ok && err != nil { t.Errorf("error retrieving value %v", err) } -} \ No newline at end of file +}