private static string DetectConverterFromJsonEntries(IArchiveReader archive) { var votes = new Dictionary(StringComparer.OrdinalIgnoreCase); foreach (var entry in archive.Entries.Where(e => e.Name.EndsWith(".json", StringComparison.OrdinalIgnoreCase))) { var head = archive.ReadHeadUtf8(entry, 64 * 1024); // light read switch (ClassifyJsonHeader(head)) { case JsonFormatDetector.Format.TopoJson: votes.Increment("TopoJson"); break; case JsonFormatDetector.Format.EsriJson: votes.Increment("EsriJson"); break; case JsonFormatDetector.Format.GeoJsonSeq:votes.Increment("GeoJsonSeq"); break; case JsonFormatDetector.Format.GeoJson: votes.Increment("GeoJson"); break; } } if (votes.Count == 0) return null; // pick majority; if tie, return null to emit a friendly ambiguity message var max = votes.Values.Max(); var winners = votes.Where(kv => kv.Value == max).Select(kv => kv.Key).ToArray(); return winners.Length == 1 ? winners[0] : null; } ``