如何将指定嵌套JSON结构转换为对应的C#类定义
C# 类结构匹配方案
完整分层类定义
以下类完全匹配提供的JSON结构,默认适配.NET 自带的System.Text.Json序列化库:
// 对应values数组内的单个对象结构 public class TxtValueItem { [JsonPropertyName("value")] public string Value { get; set; } } // 对应txt字段的对象结构 public class TxtDnsRecord { [JsonPropertyName("values")] public List<TxtValueItem> Values { get; set; } [JsonPropertyName("first_seen")] // 也可直接声明为DateTime类型,序列化器可自动识别yyyy-MM-dd格式的日期 public string FirstSeen { get; set; } } // 对应current_dns字段的对象结构 public class CurrentDnsInfo { [JsonPropertyName("txt")] public TxtDnsRecord Txt { get; set; } // 后续如果JSON新增A、MX、AAAA等其他DNS记录类型,可在此处扩展对应属性 } // JSON根节点对应类 public class DomainInfo { [JsonPropertyName("subdomain_count")] public int SubdomainCount { get; set; } [JsonPropertyName("hostname")] public string Hostname { get; set; } [JsonPropertyName("endpoint")] public string Endpoint { get; set; } [JsonPropertyName("current_dns")] public CurrentDnsInfo CurrentDns { get; set; } [JsonPropertyName("apex_domain")] public string ApexDomain { get; set; } [JsonPropertyName("alexa_rank")] public int AlexaRank { get; set; } }
适配说明
- 若使用Newtonsoft.Json(Json.NET)做序列化,仅需将所有
JsonPropertyName特性替换为JsonProperty即可正常使用。 - 此前定义失败的核心原因是没有严格对应JSON的嵌套结构:JSON中每个
{}对应一个独立类,[]对应集合/数组类型,不要使用嵌套字典匹配固定字段的结构。 - 若后续
current_dns下会出现动态的DNS记录类型作为键,可将CurrentDnsInfo类改为Dictionary<string, TxtDnsRecord>类型适配动态结构。
内容的提问来源于stack exchange,提问作者chrisxfire
相关产品推荐
相关产品推荐

