.NET Standard 中 JsonSerializer.SerializeToUtf8Bytes 的替代方案

Alternative to JsonSerializer.SerializeToUtf8Bytes in .NET Standard

JsonSerializer 是 .NET Core 和 .NET 5 的 System.Text.Json 命名空间的一部分。不幸的是,它在 .NET Standard 中不可用。

.NET Standard 中是否有 JsonSerializer.SerializeToUtf8Bytes 方法的替代方法?

您应该使用 NuGet 的 Newtonsoft 包序列化为字符串 (JsonConvert.SerializeObject)。然后使用 Encoding.UTF8.GetBytes 使用 UTF8 将字符串编码为字节数组。

有 2 个调用的原因是关注点分离。序列化和编码是两个独立的问题,不应合并,至少不能在包级别合并。

当然,您可以在您的应用程序中自由编写一个将它们结合起来的辅助方法……一种将对象转换为 UTF-8 编码字节数组的方法。但首先要确保确实需要一个字节数组。以我的经验,这很少见。通常您可以直接使用序列化字符串。

这似乎是另一种选择:

Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message))