JsonProperty
Represents a single property for a JSON object.
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace System.Text.Json
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
[DebuggerDisplay("{DebuggerDisplay,nq}")]
public readonly struct JsonProperty
{
public JsonElement Value { get; }
[System.Runtime.CompilerServices.Nullable(2)]
private string _name { get; }
public string Name => _name ?? Value.GetPropertyName();
internal bool NameIsEscaped => Value.ValueIsEscapedHelper(true);
[System.Runtime.CompilerServices.Nullable(0)]
internal ReadOnlySpan<byte> NameSpan {
get {
return Value.GetPropertyNameRaw();
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private string DebuggerDisplay {
get {
if (Value.ValueKind != 0)
return "\"" + ToString() + "\"";
return "<Undefined>";
}
}
internal JsonProperty(JsonElement value)
{
_name = null;
Value = value;
}
[System.Runtime.CompilerServices.NullableContext(2)]
public bool NameEquals(string text)
{
return NameEquals(text.AsSpan());
}
[System.Runtime.CompilerServices.NullableContext(0)]
public bool NameEquals(ReadOnlySpan<byte> utf8Text)
{
return Value.TextEqualsHelper(utf8Text, true, true);
}
[System.Runtime.CompilerServices.NullableContext(0)]
public bool NameEquals(ReadOnlySpan<char> text)
{
return Value.TextEqualsHelper(text, true);
}
internal bool EscapedNameEquals(ReadOnlySpan<byte> utf8Text)
{
return Value.TextEqualsHelper(utf8Text, true, false);
}
public void WriteTo(Utf8JsonWriter writer)
{
if (writer == null)
ThrowHelper.ThrowArgumentNullException("writer");
JsonElement value;
if (_name == null) {
value = Value;
value.WritePropertyNameTo(writer);
} else
writer.WritePropertyName(_name);
value = Value;
value.WriteTo(writer);
}
public override string ToString()
{
return Value.GetPropertyRawText();
}
}
}