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

当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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:54:19