首页 > 编程语言 >C# Json格式化换行输出

C# Json格式化换行输出

时间:2024-08-23 16:03:52浏览次数:12  
标签:ch AppendIndent C# indents break 换行 Json output Append

public static string JsonBeauty(this string input, bool arrayWrap = false, string indents = "   ") {
    void AppendIndent(StringBuilder sb, int count, string indents) { for (; count > 0; --count) sb.Append(indents); }
    var output = new StringBuilder();
    int depth = 0;
    for (int i = 0; i < input.Length; ++i) {
        char ch = input[i];
        if (ch == '\"') {
            bool str = true;
            while (str) {
                output.Append(ch);
                ch = input[++i];
                if (ch == '\\') { output.Append(ch); ch = input[++i]; } 
                else if (ch == '\"') str = false;
            }
        }
        switch (ch) {
            case '{': output.Append(ch); output.AppendLine(); AppendIndent(output, ++depth, indents); break;
            case '[': output.Append(ch); if (arrayWrap) { output.AppendLine(); AppendIndent(output, ++depth, indents); } break;
            case '}': output.AppendLine(); AppendIndent(output, --depth, indents); output.Append(ch); break;
            case ']': if (arrayWrap) { output.AppendLine(); AppendIndent(output, --depth, indents); } output.Append(ch); break;
            case ',': output.Append(ch); output.AppendLine(); AppendIndent(output, depth, indents); break;
            case ':': output.Append(" : "); break;
            default: if (!char.IsWhiteSpace(ch)) output.Append(ch); break;
        }
    }
    return output.ToString();
}

从FastJson提取出来的,

标签:ch,AppendIndent,C#,indents,break,换行,Json,output,Append
From: https://www.cnblogs.com/leavind/p/18376159

相关文章

  • Codeforces Round 967 (Div. 2) ABCD
    来源:CodeforcesRound967(Div.2)做题时间:2024_08_21A.MakeAllEqual使所有元素相等的最小操作次数,就是保留最大的数字所以操作次数就是总数减去数量最多得数B.GeneratePermutation题意构造一个序列\(p\),内部元素是\([1,2,\cdots,n]\)打乱使长度为\(n\)的初始......
  • 从语言模型到ChatGPT:大型语言模型的发展和应用
    前言大型语言模型(LLM)是指能够处理大量自然语言数据的深度学习模型,它已经在自然语言处理、文本生成、机器翻译等多个领域中展现出了巨大的潜力。在过去几年中,LLM领域经历了飞速的发展,其中Google和OpenAI作为两家领先的公司在这个领域中的表现备受关注。Google是LLM领域的重......
  • 一文彻底了解ES6中的var、let、const基本用法以及暂时性死区和变量提升的区别
             ECMAScript变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。有三个关键字可以声明变量:var、let、const。其中var在ECMAScript的所有版本中都可以使用,而 const和let只能在ECMAScript6及更......
  • 01JavaScript
    JavaScript基础-第1天了解变量、数据类型、运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程。体会现实世界中的事物与计算机的关系理解什么是数据并知道数据的分类理解变量存储数据的“容器”掌握常见运算符的使用,了解优先级关系知道JavaS......
  • C语言中的数据类型
    在C语言中,主要的数据类型有以下几类:一、基本数据类型整型:int:通常占据4个字节,具体大小取决于编译器和系统架构。用于表示整数。short:一般为2个字节,短整型。long:通常为4个字节或更多,长整型。longlong:至少8个字节,更长的整数类型。浮点型:float:单精度浮点数,......
  • centos7.6安装php7.3
    1:启用EPEL仓库sudoyuminstall-yepel-releaseyum-utils2.安装Remi仓库sudoyuminstall-yhttps://rpms.remirepo.net/enterprise/remi-release-7.rpm3:启用PHP7.3存储库sudoyum-config-manager--enableremi-php734:安装PHP7.3及其模块sudoyu......
  • CentOS 7.9 64位 使用docker安装软件过程
     CentOS7(使用yum进行安装docker):#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#St......
  • [poc] hw情报-泛微 e-cology v10 远程代码执行漏洞
    漏洞介绍 (poc下载地址见最后)  泛微披露了e-cology远程代码执行漏洞。该漏洞允许攻击者通过e-cology-10.0前台获取管理员访问令牌,然后利用JDBC反序列化,实现远程代码执行。漏洞描述  通过/papi/passport/rest/appThirdLogin接口获取管理员账号票据,根据该票据获取访问令牌......
  • MacBook Air M1 使用 miniconda 安装python3.11.7 和 tensorflow2.16.1详细
    1m1mac安装xcode命令工具在Terminal终端执行以下代码:xcode-select--install2下载支持m1芯片arm64的miniconda在miniconda官网,找到下图中保护AppleM1的bash安装包,Miniconda—Anacondadocumentation3安装miniconda在Terminal执行下列代码:1)cd"miniconda下......
  • 代码随想录算法训练营第 51 天 |LeetCode99岛屿数量 LeetCode100.岛屿的最大面积
    代码随想录算法训练营Day51代码随想录算法训练营第51天|LeetCode99岛屿数量LeetCode100.岛屿的最大面积目录代码随想录算法训练营前言LeetCode200岛屿数量LCR105.岛屿的最大面积一、广度优先搜索基础1、用队列实现2、代码框架:二、卡码网99岛屿数量(LeetCode......