当3字符代码动态时,应将指定JSON反序列化为哪种C#类型?
解决方案
因为你的JSON中translations的键是动态不可预知的3字符代码,最适合的C#类型是Dictionary<string, Translation>,其中Translation是对应子结构的实体类。
1. 定义实体类
先创建Translation类映射每个语言代码对应的结构:
public class Translation { public string Official { get; set; } public string Common { get; set; } }
如果用System.Text.Json,也可以通过[JsonPropertyName("official")]特性显式指定属性与JSON键的对应关系,确保反序列化准确。
2. 顶层类(若包含外层结构)
如果整个JSON还有外层容器,定义对应的顶层类:
public class RootObject { public Dictionary<string, Translation> Translations { get; set; } }
3. 反序列化示例
使用System.Text.Json:
var jsonContent = "你的目标JSON字符串"; var deserializedResult = JsonSerializer.Deserialize<RootObject>(jsonContent); // 遍历所有动态语言代码及对应翻译 foreach (var langItem in deserializedResult.Translations) { string langCode = langItem.Key; Translation transInfo = langItem.Value; Console.WriteLine($"语言代码:{langCode},官方名称:{transInfo.Official},通用名称:{transInfo.Common}"); }
使用Newtonsoft.Json(Json.NET):
var deserializedResult = JsonConvert.DeserializeObject<RootObject>(jsonContent);
选择Dictionary的原因
- 完全适配动态键场景,无论运行时返回多少个未知语言代码,都能自动完成映射
- 支持通过语言代码快速查找对应翻译,也能便捷遍历所有键值对
内容的提问来源于stack exchange,提问作者Gary K
相关产品推荐
相关产品推荐

