objects function
Reads a list of JSON objects at key. Missing reads as empty; a
non-object element is a contract violation and throws.
Implementation
List<Map<String, dynamic>> objects(
Map<String, dynamic> json,
String key,
String path,
) {
final value = json[key];
if (value == null) return const [];
if (value is! List) {
throw SchemaFormatException(
_join(path, key),
'expected List, got ${value.runtimeType}',
);
}
return List.generate(value.length, (index) {
final element = value[index];
if (element is! Map<String, dynamic>) {
throw SchemaFormatException(
'${_join(path, key)}[$index]',
'expected object, got ${element.runtimeType}',
);
}
return element;
});
}