analyze method

void analyze(
  1. dynamic json,
  2. String className
)

Analyzes the json object and populates classes starting with className.

If json is a Map, it analyzes the map's fields. If json is a List, it merges properties across list items to infer complete models.

Implementation

void analyze(dynamic json, String className) {
  if (json is Map) {
    _analyzeMap(json, className);
  } else if (json is List && json.isNotEmpty) {
    final Map<String, dynamic> mergedMap = {};
    for (final item in json) {
      if (item is Map) {
        for (final entry in item.entries) {
          final k = entry.key.toString();
          if (!mergedMap.containsKey(k) || mergedMap[k] == null) {
            mergedMap[k] = entry.value;
          }
        }
      }
    }
    if (mergedMap.isNotEmpty) {
      _analyzeMap(mergedMap, className);
    } else {
      _analyzeMap({}, className);
    }
  }
}