ArchiveInput.fromJson constructor
ArchiveInput.fromJson(
- Object? json_
Returns a new instance from a JSON value. May throw if the value does not have the expected structure.
Implementation
factory ArchiveInput.fromJson(Object? json_) {
Object? json = json_;
if (json is Map) {
final MapEntry(:key, :value) = json.entries.firstWhere(
(e) => e.key != 'runtimeType',
);
json = (
key is int ? key : _spec.cases.indexWhere((c) => c.label == key),
value,
);
}
return switch (json) {
(0, final value) || [0, final value] => ArchiveInputZip(
(value! as Iterable).map(ZipArchiveInput.fromJson).toList(),
),
(1, final value) || [1, final value] => ArchiveInputTar(
(value! as Iterable).map(TarArchiveInput.fromJson).toList(),
),
_ => throw Exception('Invalid JSON $json_'),
};
}