【发布时间】:2015-08-18 23:24:15
【问题描述】:
我有一个烦人的难题,我从 API 返回了多种类型,它们之间的唯一区别是属性名称。一种类型的 int 为 Count,另一种类型的 int 为 Customers,另一种类型的 int 为 Replies。
类示例:
public class DateAndCount
{
public DateTime? Date { get; set; }
public int Count { get; set; }
}
public class DateAndCount
{
public DateTime? Date { get; set; }
public int Customers { get; set; }
}
public class DateAndCount
{
public DateTime? Date { get; set; }
public int Replies { get; set; }
}
JSON 示例:
{
"count": 40,
"date": "2014-01-01T00:00:00Z"
},
{
"customers": 40,
"date": "2014-01-01T00:00:00Z"
},
{
"replies": 40,
"date": "2014-01-01T00:00:00Z"
},
不必创建 3+ 个几乎相同的类,我可以让序列化程序将任何属性名称反序列化到 Count 属性中吗?
【问题讨论】:
-
唯一想到的就是代码异味:您可以使用
JsonExtensionData,这意味着整理customers、count和datejson 属性/值变成Dictionary<string, object>。不知道你是否想那样做。 -
我同意,这有点臭。这里有另一条评论建议我能做的最好的事情是拥有一个包含数据的类,并从该类继承用于 int。我没有领先并做到了。
标签: c# json json.net json-deserialization