目前,我正在尝试将 Piwik API 的结果解析为 C# 对象列表。但是,Json 的格式化方式并没有真正让我这样做。
我从 Piwik API 获得以下数据(示例数据):
{ "2012-05-27" : [ ],
"2012-05-28" : [ ],
"2012-05-29" : { "avg_time_on_site" : 309,
"bounce_count" : 1,
"bounce_rate" : "33%",
"max_actions" : 36,
"nb_actions" : 72,
"nb_actions_per_visit" : 24,
"nb_uniq_visitors" : 2,
"nb_visits" : 3,
"sum_visit_length" : 928
},
"2012-05-30" : { "avg_time_on_site" : 263,
"bounce_rate" : "0%",
"max_actions" : 37,
"nb_actions" : 70,
"nb_actions_per_visit" : 23.300000000000001,
"nb_uniq_visitors" : 3,
"nb_visits" : 3,
"sum_visit_length" : 788
}
}
现在,我创建了一个“VisitsSummary”类型,我想将 Jason 投射到每个日期的“内部”:
public class VisitsSummaryResult
{
[JsonProperty("nb_uniq_visitors")]
public int NumUniqueVisitors { get; set; }
[JsonProperty("nb_visits")]
public int NumVisits { get; set; }
[JsonProperty("nb_actions")]
public int NumActions { get; set; }
[JsonProperty("nb_visits_converted")]
public int NumVisitsConverted { get; set; }
[JsonProperty("bounce_count")]
public int BounceCount { get; set; }
[JsonProperty("sum_visit_length")]
public int SumVisitLength { get; set; }
[JsonProperty("max_actions")]
public int MaxActions { get; set; }
[JsonProperty("bounce_rate")]
public string BounceRate { get; set; }
[JsonProperty("nb_actions_per_visit")]
public double NumActionsPerVisit { get; set; }
[JsonProperty("avg_time_on_site")]
public int AverageTimeOnSite { get; set; }
}
但是,由于数据是使用数组中的日期格式化的,所以我无法让 Json.NET 理解它应该将其视为数组。那有意义吗?
此外,自动告诉 Json.NET 将日期解析为VisitsSummaryResult的属性会很好——这可能吗?然后我可以将“VisitsSummaryResult.Date”添加到类中,以便将其全部包装到一个对象中。
目前,我只能想到自己预先解析Json,然后将各个 Json 片段传递给 Json.NET 以转换为 C# 对象——但这并不是最佳的。
有人能指点一下如何解决这个问题吗?
¡ 谢天谢地!
编辑:我还尝试使用通用字典来获取 Key->Value (Date->VisitsSummaryResult),但无济于事。
JsonConvert.DeserializeObject<Dictionary<string, VisitsSummaryResult>>(e.Result);