StackItemSets.fromJson constructor

StackItemSets.fromJson(
  1. Object? json_
)

Returns a new instance from a JSON value. May throw if the value does not have the expected structure.

Implementation

factory StackItemSets.fromJson(Object? json_) {
  final json = json_ is Map
      ? _spec.fields.map((f) => json_[f.label]).toList(growable: false)
      : json_;
  return switch (json) {
    [final insertions, final deletions] ||
    (final insertions, final deletions) => StackItemSets(
      insertions: (insertions! as Iterable)
          .map(
            (e) => (() {
              final l = e is Map
                  ? List.generate(2, (i) => e[i.toString()], growable: false)
                  : e;
              return switch (l) {
                [final v0, final v1] || (final v0, final v1) => (
                  bigIntFromJson(v0),
                  (v1! as Iterable).map(StartLength.fromJson).toList(),
                ),
                _ => throw Exception('Invalid JSON $e'),
              };
            })(),
          )
          .toList(),
      deletions: (deletions! as Iterable)
          .map(
            (e) => (() {
              final l = e is Map
                  ? List.generate(2, (i) => e[i.toString()], growable: false)
                  : e;
              return switch (l) {
                [final v0, final v1] || (final v0, final v1) => (
                  bigIntFromJson(v0),
                  (v1! as Iterable).map(StartLength.fromJson).toList(),
                ),
                _ => throw Exception('Invalid JSON $e'),
              };
            })(),
          )
          .toList(),
    ),
    _ => throw Exception('Invalid JSON $json_'),
  };
}