JSon.NET反序列化子项



对于反序列化,我通常使用具有与JSon和JsonConvert.DeserializeObject<Des>(jsonstring)中相同属性名称的对象。
但是现在我遇到了这个:

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

如何告诉JSon。Net将子类别中的'thisisinteresting'部分拉到一个类中,如:

class Des
{
   int id;
   string name;
   int thisisinteresting;
}

最简单的方法是将类建模为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,完全反序列化它的代价很小。

相关内容

  • 没有找到相关文章