jsonStruct<T> function

JsonBuilder<Map<String?, T>> jsonStruct<T>(
  1. Map<String, JsonBuilder<T>> valueBuilders, [
  2. JsonBuilder<T>? defaultBuilder
])

Builds a map from a JSON object

Reads a JSON object and builds a value for each object value using the builder returned by valueBuilders[key] for the corresponding object key. Then creates a Map<String, T> of the keys and built values.

The defaultBuilder is used if valueBuilders has no entry for a give key. If there is no defaultBuilder and not entry in valueBuilders for a key, then the entry is ignored.

Implementation

JsonBuilder<Map<String?, T>> jsonStruct<T>(
        Map<String, JsonBuilder<T>> valueBuilders,
        [JsonBuilder<T>? defaultBuilder]) =>
    (JsonReader reader) {
      reader.expectObject();
      var result = <String?, T>{};
      var key = reader.nextKey();
      while (key != null) {
        var builder = valueBuilders[key] ?? defaultBuilder;
        if (builder != null) {
          result[key] = builder(reader);
        } else {
          reader.skipAnyValue();
        }
        key = reader.nextKey();
      }
      return result;
    };