JSON反序列化问题:SendFields键值对始终为Null求助
问题分析与解决
你的反序列化失败核心原因是类结构和JSON数据的层级结构完全不匹配:
- JSON中的
SendFields是一个直接包含Category、email属性的对象,但你在MyData类里把SendFields定义成了KeyValuePair<string, SendFields>——JSON里并没有键值对的键部分,反序列化时无法匹配,直接导致该字段为null。 - 同时,
SendFields类里的Category和email定义为KeyValuePair<string, string>也错误,JSON里这两个字段是包含value属性的嵌套对象,并非键值对结构。
修正后的类结构
1. 定义对应嵌套value的类
public class FieldValue { [JsonProperty("value")] public string Value { get; set; } }
2. 修正SendFields类
public class SendFields { [JsonProperty("Category")] public FieldValue Category { get; set; } [JsonProperty("email")] public FieldValue email { get; set; } }
3. 修正MyData类
public class MyData { [JsonProperty("SendFields")] public SendFields SendFields { get; set; } }
验证反序列化
用修正后的类反序列化你的JSON数据,就能正确获取所有字段值:
var json = @"{""SendFields"": {""Category"": {""value"": ""Request Something""}, ""email"": {""value"": ""someone@somplace.com""}}}"; var data = JsonConvert.DeserializeObject<MyData>(json); // 访问值示例: // data.SendFields.Category.Value → "Request Something" // data.SendFields.email.Value → "someone@somplace.com"
内容的提问来源于stack exchange,提问作者Jeff Douglas
相关产品推荐
相关产品推荐

