C#如何将对象转换为json字符串

来源:站长工具作者:小菜鸟头衔:草根站长
导读:本期聚焦于小伙伴创作的《C#如何将对象转换为json字符串》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何将对象转换为json字符串》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,将对象转换为json字符串是数据交互场景下的基础操作,无论是接口返回数据、配置文件存储还是前后端数据传输,都经常需要用到这个功能。目前主流的实现方式有两种,分别是使用.NET框架自带的System.Text.Json库,以及使用第三方Newtonsoft.Json库,下面分别介绍两种方案的具体用法。

C#如何将对象转换为json字符串

使用System.Text.Json实现对象转json

System.Text.Json是.NET Core 3.0之后内置的json处理库,不需要额外安装依赖,适合对性能要求较高、依赖项少的场景。基础的使用方式非常简单,只需要调用JsonSerializer.Serialize方法即可。

基础序列化示例

首先定义一个测试用的实体类:

using System;

namespace JsonDemo
{
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime CreateTime { get; set; }
    }
}

然后编写序列化代码:

using System;
using System.Text.Json;

namespace JsonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建测试对象
            User user = new User
            {
                Id = 1,
                Name = "张三",
                Age = 25,
                CreateTime = DateTime.Now
            };
            // 执行序列化
            string jsonStr = JsonSerializer.Serialize(user);
            Console.WriteLine(jsonStr);
        }
    }
}

常用配置说明

如果需要自定义序列化规则,比如格式化输出、忽略空值、自定义日期格式等,可以创建JsonSerializerOptions对象进行配置:

using System;
using System.Text.Json;

namespace JsonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            User user = new User
            {
                Id = 1,
                Name = "张三",
                Age = 25,
                CreateTime = DateTime.Now
            };
            // 配置序列化选项
            JsonSerializerOptions options = new JsonSerializerOptions
            {
                // 格式化输出,方便阅读
                WriteIndented = true,
                // 忽略值为null的属性
                DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
                // 自定义日期格式
                Converters = { new System.Text.Json.Serialization.JsonStringEnumConverter() }
            };
            // 带配置的序列化
            string jsonStr = JsonSerializer.Serialize(user, options);
            Console.WriteLine(jsonStr);
        }
    }
}

使用Newtonsoft.Json实现对象转json

Newtonsoft.Json(也叫Json.NET)是C#生态中非常流行的第三方json处理库,功能更丰富,兼容性更好,支持更多自定义配置,适合复杂序列化场景。使用前需要先通过NuGet安装Newtonsoft.Json包。

基础序列化示例

同样使用上面的User类,基础序列化代码如下:

using System;
using Newtonsoft.Json;

namespace JsonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            User user = new User
            {
                Id = 1,
                Name = "张三",
                Age = 25,
                CreateTime = DateTime.Now
            };
            // 执行序列化
            string jsonStr = JsonConvert.SerializeObject(user);
            Console.WriteLine(jsonStr);
        }
    }
}

常用配置说明

Newtonsoft.Json的配置通过JsonSerializerSettings实现,支持更多自定义规则:

using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace JsonDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            User user = new User
            {
                Id = 1,
                Name = "张三",
                Age = 25,
                CreateTime = DateTime.Now
            };
            // 配置序列化设置
            JsonSerializerSettings settings = new JsonSerializerSettings
            {
                // 格式化输出
                Formatting = Formatting.Indented,
                // 忽略空值
                NullValueHandling = NullValueHandling.Ignore,
                // 日期格式设置为自定义字符串
                DateFormatString = "yyyy-MM-dd HH:mm:ss",
                // 枚举转换为字符串
                Converters = { new StringEnumConverter() }
            };
            // 带配置的序列化
            string jsonStr = JsonConvert.SerializeObject(user, settings);
            Console.WriteLine(jsonStr);
        }
    }
}

两种方案的选择建议

如果是.NET Core 3.0及以上版本的项目,且序列化需求比较简单,优先选择System.Text.Json,不需要额外依赖,性能也更好。如果项目需要兼容旧版本.NET Framework,或者需要更复杂的序列化规则,比如循环引用处理、自定义契约解析等,推荐使用Newtonsoft.Json,功能更完善。

注意事项

  • 序列化时如果对象包含循环引用,两个库默认都会抛出异常,需要配置对应的循环引用处理策略。
  • 如果对象的属性有私有 setter,System.Text.Json默认不会序列化该属性,需要额外配置,而Newtonsoft.Json默认支持。
  • 日期类型的序列化两个库的默认格式不同,实际使用时需要根据需求统一配置格式。

C#json序列化Newtonsoft_JsonSystem_Text_Json修改时间:2026-07-18 18:30:12

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