public class ApiResponse<T> : IApiResponse<T>
{
public long QuotaRemaining { get; set; }
public long QuotaMax { get; set; }
public int Backoff { get; set; }
public bool HasMore { get; set; }
public long Total { get; set; }
public string Type { get; set; }
//public long ErrorId { get; set; }
//public string ErrorMessage { get; set; }
//public string ErrorName { get; set; }
public IList<T> Items { get; set; }
public ApiError Error { get; set; }
}
public class ApiError
{
[JsonProperty("error_id")]
public long ErrorId { get; set; }
[JsonProperty("error_message")]
public string ErrorMessage { get; set; }
[JsonProperty("error_name")]
public string ErrorName { get; set; }
}
事情是Error
属性实际上与ApiResponse<T>
处于同一级别,但是我想将它们包装成ApiError
类,我怎么能实现这个?
我目前正在反序列化:
public static T DeserializeJson<T>(this string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
我想有一些属性允许我很容易地完成这个,但我无法弄清楚应该是什么配置。
答案 0 :(得分:0)
您可以通过装饰来选择和序列化哪些属性。
添加[ScriptIgnore]将导致属性不被序列化。这并不真正创建子类,但确实提供了一种仅序列化所选属性的方法。
免责声明:我只使用JavaScriptSerializer
类创建了JSON。
示例:强>
public class ApiResponse<T> : IApiResponse<T>
{
[ScriptIgnore]
public long QuotaRemaining { get; set; }
[ScriptIgnore]
public long QuotaMax { get; set; }
public int Backoff { get; set; }
public bool HasMore { get; set; }
}
在上面的课程中,只会序列化Backoff
和HasMore
属性。