避免在 System.Text.Json 中分配 属性 名称
avoid property name allocation in System.Text.Json
我正在编写一个基于 System.Text.Json
的自定义 json 序列化程序,从数组中读取 utf-8 字符串。在 examples 中,我发现了以下代码:
string propertyName = reader.GetString();
if (propertyName != "TypeDiscriminator") {
throw new JsonException();
}
我当然对分配 propertyName
变量不感兴趣,尤其是当它这么长的时候。在发现名称等于预期的文字字符串后,它将被丢弃。
是否可以在不实际获取字符串实例的情况下进行此检查?
使用ValueTextEquals
:
if (!reader.ValueTextEquals("TypeDiscriminator"))
{
throw new JsonException();
}
对于性能关键代码,最好事先转换为 UTF-8:
static readonly byte[] s_TypeDiscriminator =
Encoding.UTF8.GetBytes("TypeDiscriminator");
if (!reader.ValueTextEquals(s_TypeDiscriminator))
{
throw new JsonException();
}
我正在编写一个基于 System.Text.Json
的自定义 json 序列化程序,从数组中读取 utf-8 字符串。在 examples 中,我发现了以下代码:
string propertyName = reader.GetString();
if (propertyName != "TypeDiscriminator") {
throw new JsonException();
}
我当然对分配 propertyName
变量不感兴趣,尤其是当它这么长的时候。在发现名称等于预期的文字字符串后,它将被丢弃。
是否可以在不实际获取字符串实例的情况下进行此检查?
使用ValueTextEquals
:
if (!reader.ValueTextEquals("TypeDiscriminator"))
{
throw new JsonException();
}
对于性能关键代码,最好事先转换为 UTF-8:
static readonly byte[] s_TypeDiscriminator =
Encoding.UTF8.GetBytes("TypeDiscriminator");
if (!reader.ValueTextEquals(s_TypeDiscriminator))
{
throw new JsonException();
}