You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JsonSerializer序列化生成空JSON文件问题求助

解决System.Text.Json序列化后生成空JSON的问题

问题根源是你使用的System.Text.Json默认只序列化公共属性(Property),而你的Cache类中定义的是公共字段(Field),所以序列化时这些字段被忽略,最终生成空的{}。

以下是两种可行的解决方案:

  • 方案一:将字段改为自动属性(推荐)
    这是C#的规范写法,也符合System.Text.Json的默认序列化规则:

    internal class Cache
    {
        public string Path { get; set; } = string.Empty;
        public bool Enabled { get; set; }
    }
    
  • 方案二:配置序列化选项以包含字段
    如果不想修改类结构,可以在序列化时指定IncludeFields选项:
    修改WriteToJsonFile方法中的序列化代码:

    var options = new JsonSerializerOptions
    {
        IncludeFields = true
    };
    var contentsToWriteToFile = JsonSerializer.Serialize(objectToWrite, options);
    

补充说明:之前的方法在使用Newtonsoft.Json(Json.NET)时可以正常工作,因为该库默认会序列化公共字段,但System.Text.Json作为.NET Core 3.0及以上版本的默认JSON序列化库,行为有所差异,这就是当前出现问题的原因。

内容的提问来源于stack exchange,提问作者user20510170

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:25:21