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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:54:04