Example #1
0
        /// <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;
            }
        }
Example #2
0
        /// <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;
            }
        }
Example #3
0
        /// <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;
            }
        }
Example #4
0
        /// <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;
        }
Example #5
0
        /// <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;
        }