return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
return true;
}
- value = default;
+ value = 0;
return false;
}
Debug.Assert(segment.IndexOf(JsonConstants.BackSlash) == -1);
+ if (segment.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(segment, out DateTime tmp, out int bytesConsumed)
+ && segment.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (segment.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(segment, out value, out int bytesConsumed)
- && segment.Length == bytesConsumed;
+ return false;
}
internal bool TryGetValue(int index, out DateTimeOffset value)
Debug.Assert(segment.IndexOf(JsonConstants.BackSlash) == -1);
+ if (segment.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(segment, out DateTimeOffset tmp, out int bytesConsumed)
+ && segment.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (segment.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(segment, out value, out int bytesConsumed)
- && segment.Length == bytesConsumed;
+ return false;
}
internal bool TryGetValue(int index, out Guid value)
Debug.Assert(segment.IndexOf(JsonConstants.BackSlash) == -1);
+ if (segment.Length == JsonConstants.MaximumFormatGuidLength
+ && Utf8Parser.TryParse(segment, out Guid tmp, out _, 'D'))
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (segment.Length == JsonConstants.MaximumFormatGuidLength) && Utf8Parser.TryParse(segment, out value, out _, 'D');
+ return false;
}
internal string GetRawValueAsString(int index)
sourceUnescaped = sourceUnescaped.Slice(0, written);
Debug.Assert(!sourceUnescaped.IsEmpty);
+ if (sourceUnescaped.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(sourceUnescaped, out DateTime tmp, out int bytesConsumed)
+ && sourceUnescaped.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (sourceUnescaped.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(sourceUnescaped, out value, out int bytesConsumed)
- && sourceUnescaped.Length == bytesConsumed;
+ return false;
}
public static bool TryGetEscapedDateTimeOffset(ReadOnlySpan<byte> source, out DateTimeOffset value)
sourceUnescaped = sourceUnescaped.Slice(0, written);
Debug.Assert(!sourceUnescaped.IsEmpty);
+ if (sourceUnescaped.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(sourceUnescaped, out DateTimeOffset tmp, out int bytesConsumed)
+ && sourceUnescaped.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (sourceUnescaped.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(sourceUnescaped, out value, out int bytesConsumed)
- && sourceUnescaped.Length == bytesConsumed;
+ return false;
}
public static bool TryGetEscapedGuid(ReadOnlySpan<byte> source, out Guid value)
utf8Unescaped = utf8Unescaped.Slice(0, written);
Debug.Assert(!utf8Unescaped.IsEmpty);
+ if (utf8Unescaped.Length == JsonConstants.MaximumFormatGuidLength
+ && Utf8Parser.TryParse(utf8Unescaped, out Guid tmp, out _, 'D'))
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (utf8Unescaped.Length == JsonConstants.MaximumFormatGuidLength) && Utf8Parser.TryParse(utf8Unescaped, out value, out _, 'D');
+ return false;
}
}
}
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out int tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out long tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out uint tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out ulong tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed, _numberFormat) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out float tmp, out int bytesConsumed, _numberFormat)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed, _numberFormat) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out double tmp, out int bytesConsumed, _numberFormat)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
}
ReadOnlySpan<byte> span = HasValueSequence ? ValueSequence.ToArray() : ValueSpan;
- return Utf8Parser.TryParse(span, out value, out int bytesConsumed, _numberFormat) && span.Length == bytesConsumed;
+ if (Utf8Parser.TryParse(span, out decimal tmp, out int bytesConsumed, _numberFormat)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
+ value = 0;
+ return false;
}
/// <summary>
Debug.Assert(span.IndexOf(JsonConstants.BackSlash) == -1);
+ if (span.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(span, out DateTime tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (span.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(span, out value, out int bytesConsumed)
- && span.Length == bytesConsumed;
+ return false;
}
/// <summary>
Debug.Assert(span.IndexOf(JsonConstants.BackSlash) == -1);
+ if (span.Length <= JsonConstants.MaximumDateTimeOffsetParseLength
+ && JsonHelpers.TryParseAsISO(span, out DateTimeOffset tmp, out int bytesConsumed)
+ && span.Length == bytesConsumed)
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (span.Length <= JsonConstants.MaximumDateTimeOffsetParseLength)
- && JsonHelpers.TryParseAsISO(span, out value, out int bytesConsumed)
- && span.Length == bytesConsumed;
+ return false;
}
/// <summary>
Debug.Assert(span.IndexOf(JsonConstants.BackSlash) == -1);
+ if (span.Length == JsonConstants.MaximumFormatGuidLength
+ && Utf8Parser.TryParse(span, out Guid tmp, out _, 'D'))
+ {
+ value = tmp;
+ return true;
+ }
+
value = default;
- return (span.Length == JsonConstants.MaximumFormatGuidLength) && Utf8Parser.TryParse(span, out value, out _, 'D');
+ return false;
}
}
}
Assert.Equal(JsonValueType.String, root.Type);
Assert.False(root.TryGetDateTime(out DateTime DateTimeVal));
+ Assert.Equal(default, DateTimeVal);
Assert.False(root.TryGetDateTimeOffset(out DateTimeOffset DateTimeOffsetVal));
+ Assert.Equal(default, DateTimeOffsetVal);
Assert.Throws<FormatException>(() => root.GetDateTime());
Assert.Throws<FormatException>(() => root.GetDateTimeOffset());
Assert.Equal(JsonValueType.String, root.Type);
Assert.False(root.TryGetGuid(out Guid GuidVal));
+ Assert.Equal(default, GuidVal);
Assert.Throws<FormatException>(() => root.GetGuid());
}
const string NotPresent = "Not Present";
byte[] notPresentUtf8 = Encoding.UTF8.GetBytes(NotPresent);
- Assert.False(root.TryGetProperty(NotPresent, out _));
- Assert.False(root.TryGetProperty(NotPresent.AsSpan(), out _));
- Assert.False(root.TryGetProperty(notPresentUtf8, out _));
- Assert.False(root.TryGetProperty(new string('z', 512), out _));
+ JsonElement element;
+ Assert.False(root.TryGetProperty(NotPresent, out element));
+ Assert.Equal(default, element);
+ Assert.False(root.TryGetProperty(NotPresent.AsSpan(), out element));
+ Assert.Equal(default, element);
+ Assert.False(root.TryGetProperty(notPresentUtf8, out element));
+ Assert.Equal(default, element);
+ Assert.False(root.TryGetProperty(new string('z', 512), out element));
+ Assert.Equal(default, element);
Assert.Throws<KeyNotFoundException>(() => root.GetProperty(NotPresent));
Assert.Throws<KeyNotFoundException>(() => root.GetProperty(NotPresent.AsSpan()));
if (json.TokenType == JsonTokenType.Number)
{
Assert.False(json.TryGetInt32(out int value));
+ Assert.Equal(default, value);
Assert.True(json.TryGetDouble(out double doubleValue));
Assert.Equal(expected, doubleValue);
if (json.TokenType == JsonTokenType.Number)
{
Assert.False(json.TryGetInt64(out long value));
+ Assert.Equal(default, value);
Assert.True(json.TryGetDouble(out double doubleValue));
Assert.Equal(expected, doubleValue);
if (json.TokenType == JsonTokenType.Number)
{
Assert.False(json.TryGetUInt32(out uint value));
+ Assert.Equal(default, value);
Assert.True(json.TryGetDouble(out double doubleValue));
Assert.Equal(expected, doubleValue);
if (json.TokenType == JsonTokenType.Number)
{
Assert.False(json.TryGetUInt64(out ulong value));
+ Assert.Equal(default, value);
Assert.True(json.TryGetDouble(out double doubleValue));
Assert.Equal(expected, doubleValue);
if (json.TokenType == JsonTokenType.Number)
{
Assert.False(json.TryGetDecimal(out decimal value));
+ Assert.Equal(default, value);
Assert.True(json.TryGetDouble(out double doubleValue));
Assert.Equal(expected, doubleValue);
while (json.Read())
{
Assert.False(json.TryGetDateTime(out DateTime actualDateTime));
+ Assert.Equal(default, actualDateTime);
try
{
if (json.TokenType == JsonTokenType.String)
{
Assert.False(json.TryGetDateTimeOffset(out DateTimeOffset actualDateTime));
+ Assert.Equal(default, actualDateTime);
try
{
Assert.Equal(JsonTokenType.String, json.TokenType);
Assert.False(json.TryGetGuid(out Guid actual));
- Assert.Equal(Guid.Empty, actual);
+ Assert.Equal(default, actual);
JsonTestHelper.AssertThrows<FormatException>(json, (jsonReader) => jsonReader.GetGuid());
}