src/JsonWriter.cs

(开头部分) 19KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;

namespace Rapidity.Json
{
    /// <summary>
    /// 
    /// </summary>
    public class JsonWriter : IDisposable
    {
        private TextWriter _writer;
        private JsonOption _option;
        private string _indeteChars; //缩进字符
        private char _quoteSymbol = JsonConstants.Quote;   //引号字符
        private int _depth;
        private JsonTokenType _tokenType;
        public JsonTokenType TokenType => _tokenType;
        public int Depth => _depth;
        private Stack<JsonTokenType> _tokens;
        private JsonContainerType _containerType;

        public JsonWriter(TextWriter writer) : this(writer, new JsonOption())
        {
        }

        public JsonWriter(TextWriter writer, JsonOption option)
        {
            _writer = writer;
            _option = option ?? throw new ArgumentNullException(nameof(option));
            _tokens = new Stack<JsonTokenType>();
            if (_option.Indented)
            {
                if (_option.IndenteLength <= 0) _indeteChars = JsonConstants.Tab.ToString();
                else
                {
                    for (int i = 0; i < _option.IndenteLength; i++)
                        _indeteChars = string.Concat(_indeteChars, JsonConstants.Space);
                }
            }
        }

        #region write for jsontoken

        public void WriteToken(JsonToken token)
        {
            switch (token.ValueType)
            {
                case JsonValueType.Object: WriteObject((JsonObject)token); break;
                case JsonValueType.Array: WriteArray((JsonArray)token); break;
                case JsonValueType.String: WriteString((JsonString)token); break;
                case JsonValueType.Number: WriteNumber((JsonNumber)token); break;
                case JsonValueType.Boolean: WriteBoolean((JsonBoolean)token); break;
                case JsonValueType.Null: WriteNull(); break;
                default: break;
            }
        }

        public void WriteObject(JsonObject token)
后面还有 508 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。