C#怎么将JSON字符串美化格式输出_C#如何添加缩进换行

来源:网站主作者:马来西亚程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《C#怎么将JSON字符串美化格式输出_C#如何添加缩进换行》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么将JSON字符串美化格式输出_C#如何添加缩进换行》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,处理JSON数据是常见需求,默认生成的JSON字符串往往是紧凑无格式的状态,没有缩进和换行,不利于人工阅读和调试。实现JSON字符串的美化格式输出,核心就是通过配置序列化参数,给JSON添加合理的缩进和换行规则。

C#怎么将JSON字符串美化格式输出_C#如何添加缩进换行

使用System.Text.Json实现JSON美化

System.Text.Json是.NET Core 3.0之后内置的JSON处理库,不需要额外安装第三方包,通过配置JsonSerializerOptions的缩进相关属性即可实现美化输出。

核心配置参数

  • WriteIndented:设置为true时,序列化时会自动添加缩进和换行
  • IndentCharacter:指定缩进使用的字符,默认是空格
  • IndentSize:指定缩进的大小,默认是2个字符

示例代码

以下是一个完整的示例,演示如何将对象序列化为美化后的JSON字符串:

using System;
using System.Text.Json;

namespace JsonFormatDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建测试对象
            var testObj = new
            {
                Name = "测试数据",
                Age = 25,
                Hobbies = new[] { "阅读", "编程", "运动" },
                Address = new
                {
                    City = "北京",
                    Street = "测试路"
                }
            };

            // 配置JSON序列化选项,开启缩进
            var options = new JsonSerializerOptions
            {
                WriteIndented = true, // 开启缩进换行
                IndentSize = 4 // 设置缩进大小为4个空格
            };

            // 序列化为美化后的JSON字符串
            string formattedJson = JsonSerializer.Serialize(testObj, options);

            // 输出结果
            Console.WriteLine("美化后的JSON字符串:");
            Console.WriteLine(formattedJson);
        }
    }
}

已有JSON字符串的处理方式

如果已经拿到的是紧凑格式的JSON字符串,想要美化它,可以先反序列化为对象,再按照上面的方式重新序列化:

using System;
using System.Text.Json;

namespace JsonFormatDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 紧凑格式的JSON字符串
            string compactJson = "{"Name":"测试数据","Age":25,"Hobbies":["阅读","编程","运动"],"Address":{"City":"北京","Street":"测试路"}}";

            // 反序列化为JsonDocument对象
            using JsonDocument jsonDoc = JsonDocument.Parse(compactJson);

            // 配置序列化选项
            var options = new JsonSerializerOptions
            {
                WriteIndented = true
            };

            // 重新序列化为美化格式
            string formattedJson = JsonSerializer.Serialize(jsonDoc, options);

            Console.WriteLine("美化后的JSON字符串:");
            Console.WriteLine(formattedJson);
        }
    }
}

使用Newtonsoft.Json实现JSON美化

Newtonsoft.Json(也叫Json.NET)是老牌的JSON处理库,很多旧项目还在使用,它提供了更灵活的格式化配置方式。

安装依赖

首先需要通过NuGet安装Newtonsoft.Json包,安装命令如下:

Install-Package Newtonsoft.Json

示例代码

使用Newtonsoft.Json美化JSON的核心是通过Formatting.Indented参数控制输出格式:

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace JsonFormatDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 方式1:直接序列化对象为美化JSON
            var testObj = new
            {
                Name = "测试数据",
                Age = 25,
                Hobbies = new[] { "阅读", "编程", "运动" }
            };
            string formattedJson1 = JsonConvert.SerializeObject(testObj, Formatting.Indented);
            Console.WriteLine("方式1美化结果:");
            Console.WriteLine(formattedJson1);

            // 方式2:将已有紧凑JSON字符串美化
            string compactJson = "{"Name":"测试数据","Age":25,"Hobbies":["阅读","编程","运动"]}";
            JObject jsonObject = JObject.Parse(compactJson);
            string formattedJson2 = jsonObject.ToString(Formatting.Indented);
            Console.WriteLine("方式2美化结果:");
            Console.WriteLine(formattedJson2);

            // 自定义缩进格式
            JsonSerializerSettings settings = new JsonSerializerSettings
            {
                Formatting = Formatting.Indented,
                // 可以自定义缩进字符和大小,默认是2个空格
            };
            string formattedJson3 = JsonConvert.SerializeObject(testObj, settings);
            Console.WriteLine("自定义设置美化结果:");
            Console.WriteLine(formattedJson3);
        }
    }
}

两种方式的对比

下面是两种常用JSON库的对比,开发者可以根据项目情况选择:

对比项System.Text.JsonNewtonsoft.Json
依赖情况.NET Core 3.0+ 内置,无需额外安装需要安装第三方NuGet包
性能性能更高,是.NET官方推荐的JSON库性能稍弱,但兼容性更好
配置灵活性配置项相对简洁,满足基本格式化需求提供更多自定义配置选项,适配复杂场景
适用场景新项目、.NET Core及以上版本项目旧项目、需要复杂JSON处理的项目

注意事项

  • System.Text.Json在.NET Framework项目中无法直接使用,需要安装对应的兼容包,建议优先选择Newtonsoft.Json
  • 美化JSON会增加字符串的长度,如果JSON数据量很大,需要评估对内存和传输的影响
  • 如果只需要临时查看JSON格式,也可以使用在线JSON美化工具,但代码中处理还是推荐使用上述两种方式

C#JSON美化缩进换行JsonSerializerOptions修改时间:2026-06-15 10:00:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。