objects function

List<Map<String, dynamic>> objects(
  1. Map<String, dynamic> json,
  2. String key,
  3. String path
)

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;
  });
}