将JSON反序列化为包含自定义C#对象的对象

时间:2018-10-26 18:14:56

标签: json.net

将一些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));

1 个答案:

答案 0 :(得分:0)

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

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