Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions jsonpath.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
13 changes: 12 additions & 1 deletion jsonpath_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}{
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -191,4 +202,4 @@ func TestErrors(t *testing.T) {
if _, ok := err.(DoesNotExist); !ok && err != nil {
t.Errorf("error retrieving value %v", err)
}
}
}