ActionResult方法中JsonConvert.DeserializeObject返回null问题排查
解决JSON反序列化返回null的问题
嘿,我来帮你搞定这个反序列化返回null的问题!最可能的原因是你缺少一个匹配JSON最外层结构的根对象类,咱们一步步来解决:
核心问题分析
你的JSON最外层是一个包含General键的对象:
{ "General": { "Items": [ ... ] } }
但你目前只定义了General和Item类,直接用JsonConvert.DeserializeObject<General>(json)的话,序列化器找不到匹配的根结构,自然会返回null。
解决方案步骤
创建根对象类
新增一个包裹General属性的根类,让它和JSON的最外层结构完全对应:public class RootObject { [JsonProperty(PropertyName = "General")] public General General { get; set; } }使用根类进行反序列化
修改你的反序列化代码,指定根类作为目标类型:string json = @"{ ""General"": { ""Items"": [ { ""fId"": ""divisionID"", ""frmt"": ""Text"" }, { ""fId"": ""wcctOwnerID"", ""frmt"": ""Text"" }, { ""fId"": ""qreID"", ""frmt"": ""Text"" } ] } }"; var deserializedResult = JsonConvert.DeserializeObject<RootObject>(json);现在你就能通过
deserializedResult.General.Items拿到对应的列表数据了。
额外排查点
如果还是有问题,可以检查这几点:
- 确认你的JSON字符串没有语法错误,比如引号是否配对、逗号是否正确
- 检查
General类中省略的其他属性是否有类型不匹配或者未正确标记JsonProperty的情况 - 确保你使用的Newtonsoft.Json(Json.NET)版本是稳定版,避免版本兼容问题
内容的提问来源于stack exchange,提问作者Arnold Sandí Calderón
相关产品推荐
相关产品推荐

