at method

JsonNode at(
  1. String pointer
)

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;
}