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