10[DebuggerDisplay(
"{DebuggerDisplay,nq}")]
168 private string DebuggerDisplay =>
$"TokenType = {DebugTokenType} (TokenStartIndex = {TokenStartIndex}) Consumed = {BytesConsumed}";
712 if (
b == 32 ||
b == 13 ||
b == 10 ||
b == 9)
825 for (
int i = 1; i <
literal.Length; i++)
907 int num =
readOnlySpan.IndexOfQuoteOrAnyControlOrBackSlash();
1054 if (
b != 46 &&
b != 69 &&
b != 101)
1077 if (
b != 69 &&
b != 101)
1114 if (i >= data.Length)
1137 if (i < data.Length)
1145 if (
b != 46 &&
b != 69 &&
b != 101)
1162 while (i < data.Length)
1171 if (i >= data.Length)
1188 if (i >= data.Length)
1209 if (i >= data.Length)
1219 if (
b == 43 ||
b == 45)
1222 if (i >= data.Length)
2495 int num =
readOnlySpan.IndexOfQuoteOrAnyControlOrBackSlash();
2540 num2 =
buffer.IndexOfQuoteOrAnyControlOrBackSlash();
2850 if (
b != 46 &&
b != 69 &&
b != 101)
2875 if (
b != 69 &&
b != 101)
2927 if (i >= data.Length)
2963 if (i < data.Length)
3008 while (i < data.Length)
3018 if (i >= data.Length)
3042 while (i < data.Length)
3052 if (i < data.Length)
3075 if (i >= data.Length)
3109 if (i >= data.Length)
3131 if (
b == 43 ||
b == 45)
3135 if (i >= data.Length)
3762 if (
b != 47 &&
b != 42)
3766 bool flag =
b == 42;
3930 if (
b == 168 ||
b == 169)
3966 int num =
localBuffer.IndexOfAny<
byte>(42, 10, 13);
4764 value =
default(decimal);
static ArrayPool< T > Shared
static bool TryParse(ReadOnlySpan< byte > source, out bool value, out int bytesConsumed, char standardFormat='\0')
static byte Min(byte val1, byte val2)
static ReadOnlySpan< byte > NullValue
static ReadOnlySpan< byte > TrueValue
static ReadOnlySpan< byte > FalseValue
static ReadOnlySpan< byte > Delimiters
static ReadOnlySpan< byte > EscapableChars
static bool IsFinite(double value)
static bool IsInRangeInclusive(uint value, uint lowerBound, uint upperBound)
static bool IsDigit(byte value)
static bool TryParseAsISO(ReadOnlySpan< byte > source, out DateTime value)
static bool TryGetEscapedDateTime(ReadOnlySpan< byte > source, out DateTime value)
static string TranscodeHelper(ReadOnlySpan< byte > utf8Unescaped)
static ReadOnlySpan< byte > GetUnescapedSpan(ReadOnlySpan< byte > utf8Source, int idx)
static string GetUnescapedString(ReadOnlySpan< byte > utf8Source, int idx)
static bool TryGetEscapedDateTimeOffset(ReadOnlySpan< byte > source, out DateTimeOffset value)
static bool UnescapeAndCompare(ReadOnlySpan< byte > utf8Source, ReadOnlySpan< byte > other)
static bool TryGetEscapedGuid(ReadOnlySpan< byte > source, out Guid value)
static bool IsHexDigit(byte nextByte)
static bool TryGetFloatingPointConstant(ReadOnlySpan< byte > span, out float value)
static bool TryGetUnescapedBase64Bytes(ReadOnlySpan< byte > utf8Source, int idx, [NotNullWhen(true)] out byte[] bytes)
static bool IsTokenTypePrimitive(JsonTokenType tokenType)
static bool TryDecodeBase64(ReadOnlySpan< byte > utf8Unescaped, [NotNullWhen(true)] out byte[] bytes)
static int CountNewLines(ReadOnlySpan< byte > data)
static unsafe OperationStatus ToUtf8(ReadOnlySpan< byte > utf16Source, Span< byte > utf8Destination, out int bytesConsumed, out int bytesWritten)
static InvalidOperationException GetInvalidOperationException_ExpectedNumber(JsonTokenType tokenType)
static void ThrowJsonReaderException(ref Utf8JsonReader json, ExceptionResource resource, byte nextByte=0, ReadOnlySpan< byte > bytes=default(ReadOnlySpan< byte >))
static FormatException GetFormatException()
static InvalidOperationException GetInvalidOperationException_ExpectedStringComparison(JsonTokenType tokenType)
static InvalidOperationException GetInvalidOperationException_ExpectedString(JsonTokenType tokenType)
static JsonException GetJsonReaderException(ref Utf8JsonReader json, ExceptionResource resource, byte nextByte, ReadOnlySpan< byte > bytes)
static InvalidOperationException GetInvalidOperationException_ExpectedComment(JsonTokenType tokenType)
static InvalidOperationException GetInvalidOperationException_ExpectedBoolean(JsonTokenType tokenType)
static InvalidOperationException GetInvalidOperationException_CannotSkipOnPartial()
SequencePosition GetPosition(long offset)
ReadOnlySequence< T > Slice(long start, long length)
static readonly ReadOnlySequence< T > Empty
bool TryGet(ref SequencePosition position, out ReadOnlyMemory< T > memory, bool advance=true)
static ReadOnlySpan< T > Empty
ReadOnlySpan< T > Slice(int start)
JsonCommentHandling CommentHandling
readonly SequencePosition _prevCurrentPosition
PartialStateForRollback(long totalConsumed, long bytePositionInLine, int consumed, SequencePosition currentPosition)
readonly long _prevTotalConsumed
readonly long _prevBytePositionInLine
SequencePosition GetStartPosition(int offset=0)
readonly int _prevConsumed
ConsumeNumberResult ConsumeDecimalDigitsMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
bool ConsumePropertyName()
bool HasMoreDataMultiSegment()
PartialStateForRollback CaptureState()
double GetDoubleWithQuotes()
bool ReadFirstTokenMultiSegment(byte first)
JsonTokenType _previousTokenType
ConsumeTokenResult ConsumeNextTokenMultiSegment(byte marker)
sbyte GetSByteWithQuotes()
void ThrowOnDangerousLineSeparator(ReadOnlySpan< byte > localBuffer)
ReadOnlySequence< byte > OriginalSequence
bool TryGetSByte(out sbyte value)
bool ConsumeStringAndValidateMultiSegment(ReadOnlySpan< byte > data, int idx)
bool ConsumeValue(byte marker)
bool TryGetBytesFromBase64([NotNullWhen(true)] out byte[]? value)
DateTimeOffset GetDateTimeOffset()
bool UnescapeAndCompare(ReadOnlySpan< byte > other)
bool TryGetUInt32(out uint value)
ReadOnlySpan< byte > _buffer
bool SkipCommentMultiSegment(out int tailBytesToIgnore)
bool TryGetDateTimeOffsetCore(out DateTimeOffset value)
void SkipWhiteSpaceMultiSegment()
bool ValueTextEquals(ReadOnlySpan< byte > utf8Text)
bool UnescapeSequenceAndCompare(ReadOnlySpan< byte > other)
bool ConsumeValueMultiSegment(byte marker)
decimal GetDecimalWithQuotes()
ConsumeTokenResult ConsumeNextTokenUntilAfterAllCommentsAreSkippedMultiSegment(byte marker)
long GetInt64WithQuotes()
bool TryGetUInt32Core(out uint value, ReadOnlySpan< byte > span)
ConsumeNumberResult ConsumeNegativeSignMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
bool TryGetByte(out byte value)
JsonException GetInvalidLiteralMultiSegment(ReadOnlySpan< byte > span)
bool ConsumeSingleLineComment(ReadOnlySpan< byte > localBuffer, int previousConsumed)
bool ConsumeLiteral(ReadOnlySpan< byte > literal, JsonTokenType tokenType)
bool TryGetByteCore(out byte value, ReadOnlySpan< byte > span)
ConsumeTokenResult ConsumeNextTokenFromLastNonCommentToken()
bool ConsumeNextTokenOrRollback(byte marker)
bool ConsumeNumberMultiSegment()
bool SkipAllComments(ref byte marker, ExceptionResource resource)
bool TryGetUInt64(out ulong value)
bool TryGetDecimal(out decimal value)
ConsumeNumberResult ConsumeSign(ref ReadOnlySpan< byte > data, ref int i)
bool CheckLiteralMultiSegment(ReadOnlySpan< byte > span, ReadOnlySpan< byte > literal, out int consumed)
ConsumeNumberResult ConsumeNegativeSign(ref ReadOnlySpan< byte > data, ref int i)
bool ConsumePropertyNameMultiSegment()
short GetInt16WithQuotes()
double GetDoubleFloatingPointConstant()
bool TryGetInt16Core(out short value, ReadOnlySpan< byte > span)
ConsumeNumberResult ConsumeZero(ref ReadOnlySpan< byte > data, ref int i)
bool TryGetGuid(out Guid value)
ConsumeNumberResult ConsumeIntegerDigits(ref ReadOnlySpan< byte > data, ref int i)
ulong GetUInt64WithQuotes()
bool SkipOrConsumeCommentMultiSegmentWithRollback()
void ThrowOnDangerousLineSeparatorMultiSegment(ReadOnlySpan< byte > localBuffer, ref int dangerousLineSeparatorBytesConsumed)
bool ConsumeStringAndValidate(ReadOnlySpan< byte > data, int idx)
SequencePosition _currentPosition
ConsumeNumberResult ConsumeDecimalDigits(ref ReadOnlySpan< byte > data, ref int i)
uint GetUInt32WithQuotes()
JsonReaderState CurrentState
bool TryGetInt64(out long value)
bool MatchNotPossible(int charTextLength)
ConsumeNumberResult ConsumeZeroMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
unsafe bool ValueTextEquals(ReadOnlySpan< char > text)
Utf8JsonReader(ReadOnlySequence< byte > jsonData, JsonReaderOptions options=default(JsonReaderOptions))
bool TryGetInt64Core(out long value, ReadOnlySpan< byte > span)
bool TryGetUInt64Core(out ulong value, ReadOnlySpan< byte > span)
bool ConsumeMultiLineComment(ReadOnlySpan< byte > localBuffer, int previousConsumed)
bool SkipAllCommentsMultiSegment(ref byte marker, ExceptionResource resource)
bool SkipSingleLineCommentMultiSegment(ReadOnlySpan< byte > localBuffer, out int tailBytesToSkip)
bool MatchNotPossibleSequence(int charTextLength)
ReadOnlySpan< byte > OriginalSpan
bool TryGetDateTimeCore(out DateTime value)
bool SkipAllCommentsMultiSegment(ref byte marker)
float GetSingleWithQuotes()
int FindLineSeparatorMultiSegment(ReadOnlySpan< byte > localBuffer, ref int dangerousLineSeparatorBytesConsumed)
bool ValueTextEquals(string? text)
bool TryGetDecimalCore(out decimal value, ReadOnlySpan< byte > span)
bool TryGetDateTimeOffset(out DateTimeOffset value)
bool TryGetUInt16(out ushort value)
bool TryGetUInt16Core(out ushort value, ReadOnlySpan< byte > span)
ReadOnlySpan< byte > GetUnescapedSpan()
bool SkipAllComments(ref byte marker)
bool CompareToSequence(ReadOnlySpan< byte > other)
bool CheckLiteral(ReadOnlySpan< byte > span, ReadOnlySpan< byte > literal)
SequencePosition _nextPosition
bool TryGetNumber(ReadOnlySpan< byte > data, out int consumed)
bool TryGetInt32Core(out int value, ReadOnlySpan< byte > span)
JsonReaderOptions _readerOptions
bool TryGetNumberMultiSegment(ReadOnlySpan< byte > data, out int consumed)
bool ConsumeStringNextSegment()
Utf8JsonReader(ReadOnlySpan< byte > jsonData, bool isFinalBlock, JsonReaderState state)
DateTimeOffset GetDateTimeOffsetNoValidation()
Utf8JsonReader(ReadOnlySequence< byte > jsonData, bool isFinalBlock, JsonReaderState state)
int FindLineSeparator(ReadOnlySpan< byte > localBuffer)
float GetSingleFloatingPointConstant()
bool HasMoreData(ExceptionResource resource)
void ThrowInvalidLiteral(ReadOnlySpan< byte > span)
bool TryGetDateTime(out DateTime value)
bool TryGetInt32(out int value)
bool ConsumeLiteralMultiSegment(ReadOnlySpan< byte > literal, JsonTokenType tokenType)
Guid GetGuidNoValidation()
readonly ReadOnlySequence< byte > _sequence
ConsumeTokenResult ConsumeNextTokenUntilAfterAllCommentsAreSkipped(byte marker)
ReadOnlySpan< byte > ValueSpan
ConsumeTokenResult ConsumeNextToken(byte marker)
ConsumeNumberResult ConsumeIntegerDigitsMultiSegment(ref ReadOnlySpan< byte > data, ref int i)
bool ConsumeStringMultiSegment()
bool ValidateHexDigits(ReadOnlySpan< byte > data, int idx)
bool TryGetDouble(out double value)
void RollBackState(in PartialStateForRollback state, bool isError=false)
int FindMismatch(ReadOnlySpan< byte > span, ReadOnlySpan< byte > literal)
static bool IsTokenTypeString(JsonTokenType tokenType)
bool TextEqualsHelper(ReadOnlySpan< byte > otherUtf8Text)
readonly bool _isMultiSegment
ConsumeTokenResult ConsumeNextTokenFromLastNonCommentTokenMultiSegment()
bool ReadFirstToken(byte first)
bool ValidateStateAtEndOfData()
bool HasMoreDataMultiSegment(ExceptionResource resource)
DateTime GetDateTimeNoValidation()
bool _trailingCommaBeforeComment
bool TryGetGuidCore(out Guid value)
bool SkipSingleLineComment(ReadOnlySpan< byte > localBuffer, out int idx)
readonly bool _isInputSequence
byte[] GetBytesFromBase64()
ReadOnlySequence< byte > ValueSequence
ushort GetUInt16WithQuotes()
ConsumeNumberResult ConsumeSignMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
bool ConsumeNextTokenOrRollbackMultiSegment(byte marker)
bool SkipMultiLineCommentMultiSegment(ReadOnlySpan< byte > localBuffer)
bool TryGetSByteCore(out sbyte value, ReadOnlySpan< byte > span)
void UpdateBitStackOnEndToken()
bool TryGetInt16(out short value)
Utf8JsonReader(ReadOnlySpan< byte > jsonData, JsonReaderOptions options=default(JsonReaderOptions))
bool TryGetSingle(out float value)
bool SkipMultiLineComment(ReadOnlySpan< byte > localBuffer, out int idx)
readonly bool _isFinalBlock