jsonToCsv static method
Implementation
static String jsonToCsv(String json, {String delimiter = ","}) {
final dynamic decoded = jsonDecode(json);
if (decoded is! List) throw const FormatException("jsonToCsv expects a JSON array of objects.");
if (decoded.isEmpty) return "";
final List<String> headers = <String>[];
for (final dynamic row in decoded) {
if (row is Map<String, dynamic>) {
for (final String key in row.keys) {
if (!headers.contains(key)) headers.add(key);
}
}
}
final StringBuffer sb = StringBuffer()..writeln(headers.map((String h) => _csvField(h, delimiter)).join(delimiter));
for (final dynamic row in decoded) {
final Map<String, dynamic> map = row is Map<String, dynamic> ? row : <String, dynamic>{};
sb.writeln(headers.map((String h) => _csvField(map[h] == null ? "" : "${map[h]}", delimiter)).join(delimiter));
}
return sb.toString().trimRight();
}