Následující funkce dostane objekt, serializuje ho do JSONu a výsledek prožene GZip kompresí.
Prozradím, že Flush na jsonWriter nezafunguje a ve výsledku chybí pár bajtů z konce těch dat. Otázkou je, proč se to děje, a jak to opravit?
P.S. Není to bug ve Frameworku.
public string SerializeGame(Game game)
{
var serializer = new JsonSerializer() { TypeNameHandling = TypeNameHandling.All };
using (var ms = new MemoryStream())
{
using (var gzip = new GZipStream(ms, CompressionMode.Compress))
{
using (var writer = new StreamWriter(gzip))
{
using (var jsonWriter = new JsonTextWriter(writer))
{
serializer.Serialize(jsonWriter, game);
jsonWriter.Flush(); // tenhle Flush nefunguje, ale proč?
return Convert.ToBase64String(ms.ToArray());
}
}
}
}
}