現在、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」タイプを作成しました。
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 に理解させることができません。それは理にかなっていますか?
さらに、日付をVisitsSummaryResult のプロパティに解析するように Json.NET に自動的に指示するとよいでしょう。次に、「VisitsSummaryResult.Date」をクラスに追加して、すべてを 1 つのオブジェクトに適切にラップすることができます。
現在、Json を自分で事前解析してから、個々の Json スニペットを Json.NET に渡して C# オブジェクトに変換することしか考えられませんが、それは最適とは言えません。
この問題を解決する方法についての指針はありますか?
グラシアス!
編集: Key->Value (Date->VisitsSummaryResult) を取得するために一般的な辞書でも試しましたが、役に立ちませんでした。
JsonConvert.DeserializeObject<Dictionary<string, VisitsSummaryResult>>(e.Result);