Пример #1
0
        /// <summary>
        /// Writes a property name.
        /// </summary>
        public void WritePropertyName(string name, bool escape = false)
        {
            if (_statusStack.Count == 0)
            {
                throw new Exception("Cannot write property name at this point.");
            }
            else
            {
                var status = _statusStack.Peek();
                if (status != Status.PropertyValueWritten &&
                    status != Status.ObjectOpened)
                {
                    throw new Exception("Cannot write property name at this point.");
                }

                if (status == Status.PropertyValueWritten)
                { // write comma before starting new property.
                    _writer.Write(',');
                }
            }

            _writer.Write('"');
            if (escape)
            {
                name = JsonTools.Escape(name);
            }
            _writer.Write(name);
            _writer.Write('"');
            _writer.Write(':');
            _statusStack.Push(Status.PropertyNameWritten);
        }
Пример #2
0
        /// <summary>
        /// Writes a property value.
        /// </summary>
        public void WritePropertyValue(string value, bool useQuotes = false, bool escape = false)
        {
            if (_statusStack.Count == 0)
            {
                throw new Exception("Cannot write property value at this point.");
            }
            else
            {
                var status = _statusStack.Peek();
                if (status != Status.PropertyNameWritten)
                {
                    throw new Exception("Cannot write property value at this point.");
                }
            }

            if (useQuotes)
            {
                _writer.Write('"');
            }
            if (escape)
            {
                value = JsonTools.Escape(value);
            }
            _writer.Write(value);
            if (useQuotes)
            {
                _writer.Write('"');
            }
            _statusStack.Push(Status.PropertyValueWritten);
        }
Пример #3
0
        /// <summary>
        /// Writes an array value.
        /// </summary>
        public void WriteArrayValue(string value, bool useQuotes = false, bool escape = true)
        {
            if (_statusStack.Count == 0)
            {
                throw new Exception("Cannot write array at this point.");
            }
            else
            {
                var status = _statusStack.Peek();
                if (status != Status.ArrayOpenWritten &&
                    status != Status.ArrayValueWritten)
                {
                    throw new Exception("Cannot write array at this point.");
                }

                if (status == Status.ArrayValueWritten)
                {
                    _writer.Write(",");
                }
            }

            if (useQuotes)
            {
                _writer.Write('"');
            }
            if (escape)
            {
                value = JsonTools.Escape(value);
            }
            _writer.Write(value);
            if (useQuotes)
            {
                _writer.Write('"');
            }
            _statusStack.Push(Status.ArrayValueWritten);
        }