这是我的JSON:
"Dt": {
"20171021": {
"abc": "-"
},
"20171022": {
"abc": "-"
},
"20171023": {
"abc": "-"
},
"20171024": {
"abc": "-"
},
"20171025": {
"abc": "-"
}
}
Dt中的属性都是动态的。它们都是日期,但为字符串格式。所以我在考虑是否需要一个List对象,但是JSON.Net如何将其映射到List中?我在考虑类结构,类似于:
public class Dt
{
public List<RealDate> RealDates { get; set;}
}
public class RealDate
{
public string Date{ get; set;} //to hold "20171021"
public Tuple<string, string> Keys {get; set;} // to hold abc as Key1 and - as Key2
}
感谢您的帮助。
答案 0 :(得分:5)
看起来没有public class MainWindowModel : ObservableObject
{
public MainWindowModel()
{
}
private int _currentPage;
public int currentPage
{
get
{
return _currentPage;
}
set
{
_currentPage = value;
OnPropertyChanged("currentPage");
}
// below will be more properties
}
}
,而目前 的Dt
实际上应该具有:
Dt
其中public Dictionary<string, Foo> Dt { get; set;}
是:
Foo
然后您将对其进行后处理,以将DTO模型(序列化模型)转换为您的 actual 模型。
请记住:只要序列化数据的外观与域模型的外观之间甚至存在细微的差别,就可以:添加DTO模型,然后手动在它们之间进行映射。这样可以节省您的理智。
答案 1 :(得分:1)
您的json无效(缺少括号),但以下json
{
"Dt": {
"20171021": {
"abc": "-"
},
"20171022": {
"abc": "-"
},
"20171023": {
"abc": "-"
},
"20171024": {
"abc": "-"
},
"20171025": {
"abc": "-"
}
}
}
可以反序列化为以下对象:
public class Model
{
[JsonProperty("Dt")]
public Dictionary<string, Value> Data { get; set; }
}
public class Value
{
[JsonProperty("abc")]
public string Abc { get; set; }
}
测试代码:
string json = @"{
""Dt"": {
""20171021"": {
""abc"": ""-""
},
""20171022"": {
""abc"": ""-""
},
""20171023"": {
""abc"": ""-""
},
""20171024"": {
""abc"": ""-""
},
""20171025"": {
""abc"": ""-""
}
}
}";
var model = JsonConvert.DeserializeObject<Model>(json);