Skip to content

Commit a6e58b8

Browse files
committed
Fix problem with key escaping in _object
1 parent d94c308 commit a6e58b8

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/json.bash

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ JSON.object() {
9898
JSON._object() {
9999
local key=$1
100100
if [[ -n $key && $key != "/" ]]; then
101-
key=${key/\//\\/}
102-
grep -E "^$key/" |
103-
sed "s/^$key//"
101+
key=${key//\//\\/}
102+
sed -n "s/^$key//p"
104103
else
105104
cat
106105
fi

test/keys.t

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
source test/setup
44

5-
use Test::More tests 5
5+
use Test::More tests 6
66
use JSON
77

88
tree1=$(cat test/keys.json | JSON.load)
@@ -28,3 +28,8 @@ is "$keys" \
2828
keys="$(JSON.keys '/' tree1)"
2929
is "$keys" "description"$'\n'"files" \
3030
"JSON.keys '/'" #'
31+
32+
keys="$(JSON.keys '/files/file 2.txt' tree1)"
33+
is "$keys" \
34+
"content"$'\n'"type" \
35+
"JSON.keys '/files/file 2.txt'" #'

0 commit comments

Comments
 (0)