JSon.NET反序列化子项

时间:2016-10-17 13:27:24

标签: c# json json.net

对于反序列化,我通常使用具有与JSon和List<StudentDTO> filteredstudentsWithUnits = students .Where(s => s.age != null && s.status != "DEL") .Where(s => !_context.Items .Any(x => s.SubjectTypes .SelectMany(t => t.SubjectItem.Select(si => si.value1)) .Contains(x.Name))) .ToList(); 中相同的属性名称的对象。
但现在我遇到了这个:

JsonConvert.DeserializeObject<Des>(jsonstring)

我怎样才能告诉JSon.Net拉出这个有趣的东西?将子类的一部分分成如下类:

{
   "id": 0815,
   "name": "whatever"
   "addedInfo": {
       "thisisinteresting": 4711,
       "id_str": "2336"
    }
}

1 个答案:

答案 0 :(得分:2)

简单的方法是将您的类实际建模为JSON结构:

public class AddedInfo
{
    public int thisisinteresting { get; set; }
    public string id_str { get; set; }
}

public class RootObject
{
    public int id { get; set; }
    public string name { get; set; }
    public AddedInfo addedInfo { get; set; }
}

然后向RootObject添加一个属性以发出属性:

public class RootObject
{
    public int id { get; set; }
    public string name { get; set; }
    public AddedInfo addedInfo { get; set; }

    [JsonIgnore]
    public int thisisinteresting { get { return addedInfo.thisisinteresting; } }
}

还有其他选择,例如创建自定义序列化程序或使用JObject并自行反序列化结构,但我不会进入。如果你还需要解析JSON,那么完全反序列化的价格很小。