/// <summary> /// Constructs a JSON writer with a specified <paramref name="output"/>. /// </summary> /// <param name="output">An instance of <see cref="ITextOutput" /> used for writing bytes to an output channel.</param> /// <param name="prettyPrint">Specifies whether to add whitespace to the output text for user readability.</param> public JsonWriter(ITextOutput output, bool prettyPrint = false) { _output = output; _prettyPrint = prettyPrint; _indent = -1; _firstItem = true; var symbolTable = output.SymbolTable; if (symbolTable == SymbolTable.InvariantUtf8) { _encoderState = JsonEncoderState.UseFastUtf8; } else if (symbolTable == SymbolTable.InvariantUtf16) { _encoderState = JsonEncoderState.UseFastUtf16; } else { _encoderState = JsonEncoderState.UseFullEncoder; } }
/// <summary> /// Constructs a JSON writer with a specified <paramref name="bufferWriter"/>. /// </summary> /// <param name="bufferWriter">An instance of <see cref="ITextBufferWriter" /> used for writing bytes to an output channel.</param> /// <param name="prettyPrint">Specifies whether to add whitespace to the output text for user readability.</param> public JsonWriter(ITextBufferWriter bufferWriter, bool prettyPrint = false) { _bufferWriter = bufferWriter; _prettyPrint = prettyPrint; _indent = -1; _firstItem = true; var symbolTable = bufferWriter.SymbolTable; if (symbolTable == SymbolTable.InvariantUtf8) { _encoderState = JsonEncoderState.UseFastUtf8; } else if (symbolTable == SymbolTable.InvariantUtf16) { _encoderState = JsonEncoderState.UseFastUtf16; } else { _encoderState = JsonEncoderState.UseFullEncoder; } }
/// <summary> /// Constructs a JSON writer with a specified <paramref name="output"/>. /// </summary> /// <param name="output">An instance of <see cref="ITextOutput" /> used for writing bytes to an output channel.</param> /// <param name="prettyPrint">Specifies whether to add whitespace to the output text for user readability.</param> public JsonWriter(ITextOutput output, bool prettyPrint = false) { _output = output; _prettyPrint = prettyPrint; _indent = -1; _firstItem = true; var encoder = output.Encoder; if (encoder.IsInvariantUtf8) { _encoderState = JsonEncoderState.UseFastUtf8; } else if (encoder.IsInvariantUtf16) { _encoderState = JsonEncoderState.UseFastUtf16; } else { _encoderState = JsonEncoderState.UseFullEncoder; } }
/// <summary> /// Constructs a new JsonReader instance. This is a stack-only type. /// </summary> /// <param name="data">The <see cref="Span{byte}"/> value to consume. </param> /// <param name="encoder">An encoder used for decoding bytes from <paramref name="data"/> into characters.</param> public JsonReader(ReadOnlySpan <byte> data, SymbolTable symbolTable) { _buffer = data; _symbolTable = symbolTable; _depth = 0; _containerMask = 0; if (_symbolTable == SymbolTable.InvariantUtf8) { _encoderState = JsonEncoderState.UseFastUtf8; } else if (_symbolTable == SymbolTable.InvariantUtf16) { _encoderState = JsonEncoderState.UseFastUtf16; } else { _encoderState = JsonEncoderState.UseFullEncoder; } TokenType = JsonTokenType.None; Value = ReadOnlySpan <byte> .Empty; ValueType = JsonValueType.Unknown; }
/// <summary> /// Constructs a new JsonReader instance. This is a stack-only type. /// </summary> /// <param name="data">The <see cref="Span{byte}"/> value to consume. </param> /// <param name="encoder">An encoder used for decoding bytes from <paramref name="data"/> into characters.</param> public JsonReader(ReadOnlySpan <byte> data, TextEncoder encoder) { _buffer = data; _encoder = encoder; _depth = 0; _containerMask = 0; if (encoder.IsInvariantUtf8) { _encoderState = JsonEncoderState.UseFastUtf8; } else if (encoder.IsInvariantUtf16) { _encoderState = JsonEncoderState.UseFastUtf16; } else { _encoderState = JsonEncoderState.UseFullEncoder; } TokenType = JsonTokenType.None; Value = ReadOnlySpan <byte> .Empty; ValueType = JsonValueType.Unknown; }