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

Newtonsoft.Json反序列化JSON返回所有属性为null问题求助

问题原因

你的JSON结构最外层存在一层包裹对象,WSettings是外层对象的属性值,而非根节点直接对应WSettings类结构,因此直接反序列化时无法匹配到对应字段,返回的对象所有属性均为默认值null。

解决方案

方案1:新增外层包装类(推荐,改动最小)

新增根节点对应实体类:

public class RootObject
{
    public WSettings WSettings { get; set; }
}

修改反序列化代码为:

var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(File.ReadAllText(@"json.txt"));
WSettings w = root.WSettings;

方案2:直接提取目标节点反序列化(无需新增类)

通过JObject先读取JSON结构,提取WSettings节点后再转换为对应实体:

var jobj = Newtonsoft.Json.Linq.JObject.Parse(File.ReadAllText(@"json.txt"));
WSettings w = jobj["WSettings"].ToObject<WSettings>();

方案3:修改JSON结构(若允许调整JSON内容)

删除JSON最外层的包裹,直接保留WSettings对象的内容作为JSON根节点:

{
  "Message":"\"We are the universe's way of experiencing itself.\"<br/>- Kurzgesagt -",
  "universalMessageProcChance":10,
  "Hi":{
         "altName":"Hi",
         "normalState":"hi",
         "hState":"hi_h",
         "aState":"hi_a",
         "background":"bg_owo_r",
         "stateLayout":4,
         "backgroundLayout":1,
         "eventMessage":"Da"
     },
  "Yu":{
         "altName":"Al",
         "normalState":"al",
         "hState":"al_h",
         "aState":"ali_a",
         "background":"bg_owo_b",
         "stateLayout":4,
         "backgroundLayout":1,
         "eventMessage":"Da"
  }
}

修改后原有反序列化代码可正常运行。

内容的提问来源于stack exchange,提问作者Mamhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:04