对于反序列化,我通常使用具有与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,完全反序列化它的代价很小。