Anurag Arwalkar
Anurag Arwalkar

Reputation: 725

Generate Nested Map from Path String in dart

I want to create a map using the path

generateNestedMap("foo.bar.baz", "someValue")

and the output should be

Output: {'foo'{'bar':{'baz': 'someValue'}}}

Upvotes: 0

Views: 184

Answers (1)

Randal Schwartz
Randal Schwartz

Reputation: 44046

Run this in dartpad. No recursion required. Just build it from inside-out:

void main() {
  print(generateNestedMap("foo.bar.baz", "someValue"));
}

Map generateNestedMap(String path, String payload) {
  
  var steps = path.split('.');
  Object result = payload;
  for (var step in steps.reversed) {
    result = {step : result};
  }
  return result as Map;

}

EDIT: Or, as I suggested in one of the comments, a little fancier, but cool:

void main() {
  print(generateNestedMap("foo.bar.baz", "someValue"));
}

Map generateNestedMap(String path, String payload) {
  var steps = path.split('.');
  var result = steps.reversed.fold(payload, (old, next) => {next: old});
  return result as Map;
}

Upvotes: 1

Related Questions