fromJson static method
Tolerant of anything the wire hands over: a section that does not have
the expected shape reads back as absent rather than throwing — the same
stance as tryDecodeFrame.
Implementation
static ServerInfo fromJson(Map<String, Object?> json) {
List<T>? typedList<T>(Object? value, T? Function(Object?) parse) {
if (value is! List) return null;
var out = <T>[];
for (var item in value) {
var parsed = parse(item);
if (parsed != null) out.add(parsed);
}
return out;
}
Map<String, Map<String, Object?>>? groups(Object? value) {
if (value is! Map) return null;
return {
for (var entry in value.entries)
if (entry.value is Map)
'${entry.key}': (entry.value as Map).cast<String, Object?>(),
};
}
return ServerInfo(
baseUrl: _string(json['baseUrl']),
environment: _string(json['environment']),
links: typedList(json['links'], ServerLink.fromJson),
connections: typedList(json['connections'], ServerConnection.fromJson),
config: groups(json['config']),
);
}