writePath function

void writePath(
  1. JsonMap json,
  2. String path,
  3. Object? value
)

Sets the value at path in a JSON document using dot notation.

Creates intermediate objects as needed. Paths like 'user.profile.age' will create nested objects if they don't exist.

Implementation

void writePath(JsonMap json, String path, Object? value) {
  final segments = path.split('.');
  JsonMap current = json;

  for (var index = 0; index < segments.length - 1; index++) {
    final segment = segments[index];
    final next = current[segment];
    if (next is Map<dynamic, dynamic>) {
      current = next.cast<String, dynamic>();
      continue;
    }

    final replacement = <String, dynamic>{};
    current[segment] = replacement;
    current = replacement;
  }

  current[segments.last] = value;
}