setByPath<T> method

dynamic setByPath<T>(
  1. JsonPath<T> path,
  2. T? value
)
override

Implementation

dynamic setByPath<T>(JsonPath<T> path, T? value) {
  if (value == "") value = null;
  final lastSegment = path.last;
  final parents = path.chop;
  dynamic container = this;
  for (var segment in parents.segments) {
    container = container.get(segment);
    if (container == null) {
      throw Exception(
          "Missing container in heirarchy.  Full path: $path.  Error found at segment $segment");
    }
  }
  if (value == null && container is Map) {
    container.remove(lastSegment);
  } else {
    container[lastSegment] = value;
  }
}