Datacat.fromJsonString constructor

Datacat.fromJsonString(
  1. String jsonString
)

Creates a Datacat from a JSON string representing a list of objects.

Implementation

factory Datacat.fromJsonString(String jsonString) {
  final decoded = json.decode(jsonString);
  if (decoded is! List) {
    throw ArgumentError('JSON input must be a list of objects.');
  }
  if (decoded.isEmpty) {
    return Datacat(columns: [], rows: []);
  }
  final allKeys = <String>{};
  for (final item in decoded) {
    if (item is Map) {
      allKeys.addAll(item.keys.map((k) => k.toString()));
    }
  }
  final colList = allKeys.toList();
  final rowList = <List<dynamic>>[];
  for (final item in decoded) {
    if (item is Map) {
      final row = colList.map((col) => item[col]).toList();
      rowList.add(row);
    }
  }
  return Datacat(columns: colList, rows: rowList);
}