.NET 6中System.Text.Json反序列化Dictionary属性为空如何解决
System.Text.Json反序列化字典字段为空解决方案
问题根因
你定义的LocalizedValue是公共字段,而非带get/set访问器的公共属性,System.Text.Json默认仅支持公共属性的序列化/反序列化,不会识别公共字段,因此反序列化后该字段始终为初始的空字典。
解决方案
方案1:修改类定义,将字段改为属性(推荐)
直接将LocalizedValue调整为公共属性,和现有Key的定义格式保持一致即可,无需修改反序列化代码:
public class Translations { public string Key { get; set; } // 调整为带get/set的公共属性,保留初始化逻辑 public Dictionary<string, string> LocalizedValue { get; set; } = new(); }
调整后直接调用原有反序列化代码即可正常填充字典。
方案2:保留字段定义,修改序列化配置
如果不想调整原有类的结构,可以在反序列化时显式开启公共字段支持:
var jsonOptions = new System.Text.Json.JsonSerializerOptions { IncludeFields = true }; jsonlocalization = System.Text.Json.JsonSerializer.Deserialize<List<Translations>>(jsonString, jsonOptions);
内容的提问来源于stack exchange,提问作者PhilipRaets
相关产品推荐
相关产品推荐

