at method
Returns the node at the JSON Pointer pointer (/book/tags/0;
~1 stands for /, ~0 for ~), or a MissingNode when there is
none. An empty pointer gives this node; one not starting with /
throws an ArgumentError.
Implementation
JsonNode at(String pointer) {
if (pointer.isEmpty) {
return this;
}
if (!pointer.startsWith('/')) {
throw ArgumentError.value(pointer, 'pointer', 'must start with /');
}
var node = this;
for (final raw in pointer.substring(1).split('/')) {
final segment = raw.replaceAll('~1', '/').replaceAll('~0', '~');
node =
switch (node) {
ArrayNode() => node.get(int.tryParse(segment) ?? -1),
_ => node.get(segment),
} ??
MissingNode.instance;
if (node is MissingNode) {
break;
}
}
return node;
}