diff options
author | Araq <rumpf_a@web.de> | 2018-03-30 02:32:29 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-03-30 02:32:29 +0200 |
commit | a9691aeef513ea20a9b1735f37172a1bd66a80dd (patch) | |
tree | 2d0de165d9907a3a8a4b56cea5bb33a3fb201465 /lib/pure/json.nim | |
parent | 9de05ec3e04e8a2321b29896fe9fa7db4c6e65f3 (diff) | |
parent | 325d76b56a5b26ba2d5ce065574eb6ef736eb179 (diff) | |
download | Nim-a9691aeef513ea20a9b1735f37172a1bd66a80dd.tar.gz |
Merge branch 'devel' of github.com:nim-lang/Nim into devel
Diffstat (limited to 'lib/pure/json.nim')
-rw-r--r-- | lib/pure/json.nim | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim index 2b58d154e..912cd6837 100644 --- a/lib/pure/json.nim +++ b/lib/pure/json.nim @@ -964,6 +964,16 @@ proc `{}`*(node: JsonNode, keys: varargs[string]): JsonNode = return nil result = result.fields.getOrDefault(key) +proc `{}`*(node: JsonNode, index: varargs[int]): JsonNode = + ## Traverses the node and gets the given value. If any of the + ## indexes do not exist, returns ``nil``. Also returns ``nil`` if one of the + ## intermediate data structures is not an array. + result = node + for i in index: + if isNil(result) or result.kind != JArray or i >= node.len: + return nil + result = result.elems[i] + proc getOrDefault*(node: JsonNode, key: string): JsonNode = ## Gets a field from a `node`. If `node` is nil or not an object or ## value at `key` does not exist, returns nil |