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
相关产品推荐
相关产品推荐

