【问题标题】:Deserialize JSON into objects containing custom C# objects将 JSON 反序列化为包含自定义 C# 对象的对象
【发布时间】:2018-10-27 03:40:20
【问题描述】:

无法将某些 JSON 反序列化为自定义 C# 对象。我认为如果我构建一个看起来像 JSON 的类,它会知道要使用哪些自定义对象类(显示和范围),但显然我做错了什么。在反序列化调用之后,Display 和 Range 都为空。 我猜我缺少一些包装器,但不知道如何设置它们。

这是只有一个“参数”的 JSON:

{
 "Params": [
     { // This is a "Param" object
       "Type": "myType",
        "EnumCode": "ZZZ",
        "Display": {
            "Name": "myName",
            "Description": "myDescription"
          }
         "Range": {
             "Default": "1",
              "Values": [
                  "1",
                   "2"
               ]
          }
      }
   ]
}

这些是我的课程:

public class Display
{
    public string Name { get; set; }
    public string Description { get; set; }
}

public class Range
{
    public string Default { get; set; }
    public List<string> Values { get; set; }
}
public class Param
{
    public string Type { get; set; }
    public string EnumCode { get; set; }
    public Display UIDisplay { get; set; }
    public Range RangeValues { get; set; }
}

我正在尝试使用此包装器反序列化 JSON:

public class ParamsJSON
{
    public List<Param> Params;
}

像这样:

var j = JsonConvert.DeserializeObject<TuneParameterJSON>(File.ReadAllText(paramsFilePath));

【问题讨论】:

    标签: json.net


    【解决方案1】:

    啊,我的错。将类重命名为 CDisplay 和 CRange 是我所缺少的。

    public class Param
    {
        ...
        public CDisplay Display { get; set; }
        public CRange Range { get; set; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 2021-06-24
      相关资源
      最近更新 更多