JsonValueOfJsonNumber
using System.Buffers.Text;
using System.Diagnostics.CodeAnalysis;
namespace System.Text.Json.Nodes
{
internal sealed class JsonValueOfJsonNumber : JsonValue
{
private readonly byte[] _value;
internal JsonValueOfJsonNumber(byte[] number, JsonNodeOptions? options)
: base(options)
{
_value = number;
}
internal override JsonNode DeepCloneCore()
{
return new JsonValueOfJsonNumber(_value, base.Options);
}
private protected override JsonValueKind GetValueKindCore()
{
return JsonValueKind.Number;
}
public override T GetValue<T>()
{
if (!TryGetValue(out T value))
ThrowHelper.ThrowInvalidOperationException_NodeUnableToConvertElement(JsonValueKind.Number, typeof(T));
return value;
}
public override bool TryGetValue<T>([NotNullWhen(true)] out T value)
{
if (typeof(T) == typeof(JsonElement)) {
value = (T)(object)JsonElement.Parse(_value, default(JsonDocumentOptions));
return true;
}
if (typeof(T) == typeof(int) || typeof(T) == typeof(int?)) {
int value2;
int bytesConsumed;
bool result = Utf8Parser.TryParse(_value, out value2, out bytesConsumed, ' ') && bytesConsumed == _value.Length;
value = (T)(object)value2;
return result;
}
if (typeof(T) == typeof(long) || typeof(T) == typeof(long?)) {
long value3;
int bytesConsumed2;
bool result2 = Utf8Parser.TryParse(_value, out value3, out bytesConsumed2, ' ') && bytesConsumed2 == _value.Length;
value = (T)(object)value3;
return result2;
}
if (typeof(T) == typeof(double) || typeof(T) == typeof(double?)) {
double value4;
int bytesConsumed3;
bool result3 = Utf8Parser.TryParse(_value, out value4, out bytesConsumed3, ' ') && bytesConsumed3 == _value.Length;
value = (T)(object)value4;
return result3;
}
if (typeof(T) == typeof(short) || typeof(T) == typeof(short?)) {
short value5;
int bytesConsumed4;
bool result4 = Utf8Parser.TryParse(_value, out value5, out bytesConsumed4, ' ') && bytesConsumed4 == _value.Length;
value = (T)(object)value5;
return result4;
}
if (typeof(T) == typeof(decimal) || typeof(T) == typeof(decimal?)) {
decimal value6;
int bytesConsumed5;
bool result5 = Utf8Parser.TryParse(_value, out value6, out bytesConsumed5, ' ') && bytesConsumed5 == _value.Length;
value = (T)(object)value6;
return result5;
}
if (typeof(T) == typeof(byte) || typeof(T) == typeof(byte?)) {
byte value7;
int bytesConsumed6;
bool result6 = Utf8Parser.TryParse(_value, out value7, out bytesConsumed6, ' ') && bytesConsumed6 == _value.Length;
value = (T)(object)value7;
return result6;
}
if (typeof(T) == typeof(float) || typeof(T) == typeof(float?)) {
float value8;
int bytesConsumed7;
bool result7 = Utf8Parser.TryParse(_value, out value8, out bytesConsumed7, ' ') && bytesConsumed7 == _value.Length;
value = (T)(object)value8;
return result7;
}
if (typeof(T) == typeof(uint) || typeof(T) == typeof(uint?)) {
uint value9;
int bytesConsumed8;
bool result8 = Utf8Parser.TryParse(_value, out value9, out bytesConsumed8, ' ') && bytesConsumed8 == _value.Length;
value = (T)(object)value9;
return result8;
}
if (typeof(T) == typeof(ushort) || typeof(T) == typeof(ushort?)) {
ushort value10;
int bytesConsumed9;
bool result9 = Utf8Parser.TryParse(_value, out value10, out bytesConsumed9, ' ') && bytesConsumed9 == _value.Length;
value = (T)(object)value10;
return result9;
}
if (typeof(T) == typeof(ulong) || typeof(T) == typeof(ulong?)) {
ulong value11;
int bytesConsumed10;
bool result10 = Utf8Parser.TryParse(_value, out value11, out bytesConsumed10, ' ') && bytesConsumed10 == _value.Length;
value = (T)(object)value11;
return result10;
}
if (typeof(T) == typeof(sbyte) || typeof(T) == typeof(sbyte?)) {
sbyte value12;
int bytesConsumed11;
bool result11 = Utf8Parser.TryParse(_value, out value12, out bytesConsumed11, ' ') && bytesConsumed11 == _value.Length;
value = (T)(object)value12;
return result11;
}
value = default(T);
return false;
}
public override void WriteTo(Utf8JsonWriter writer, JsonSerializerOptions options = null)
{
ArgumentNullException.ThrowIfNull(writer, "writer");
writer.WriteNumberValue(_value);
}
}
}