私が銀行休業日を取得するためのAPIにアクセスしているASP MVCプロジェクトを持っている:私はJSONをパースするとき、私はのレベルまで取得しようとすると、https://www.gov.uk/bank-holidays.jsonJSON解析バンクホリデーカレンダー
は、しかし、私は問題を取得していますそのイベント'。現在、私は持っています:
var json = new WebClient().DownloadString("https://www.gov.uk/bank-holidays.json");
JavaScriptSerializer serializer = new JavaScriptSerializer();
var test = serializer.Deserialize<Dictionary<string, Dictionary<string, object>>>(json);
このデシリアライザの最終オブジェクトを意味のあるものにキャストできないようです。私はさまざまなオブジェクト、リスト、配列などを試しましたが、何も動作していないようです。私はそれを対象にすることができるように思えるだけです。
理想的には私のような意味のあるオブジェクトに解析されるようにJSONを希望:
public class BankHoliday
{
public DateTime Date { get; set; }
public string Title { get; set; }
public Country CountryCode { get; set; }
public string Notes { get; set; }
public bool Bunting { get; set; }
}
public enum Country
{
EnglandWales,
Scotland,
NorthernIreland
}
私はこれはかなり簡単だろうと思ったが、私はすべてを試してみました。私はそれが私が行方不明の単純なものだと確信しています。
public class Event
{
public string title { get; set; }
public string date { get; set; }
public string notes { get; set; }
public bool bunting { get; set; }
}
public class EnglandAndWales
{
public string division { get; set; }
public List<Event> events { get; set; }
}
public class Scotland
{
public string division { get; set; }
public List<Event> events { get; set; }
}
public class NorthernIreland
{
public string division { get; set; }
public List<Event> events { get; set; }
}
public class RootObject
{
[JsonProperty(PropertyName = "england-and-wales")]
public EnglandAndWales EnglandAndWales { get; set; }
public Scotland scotland { get; set; }
[JsonProperty(PropertyName = "northern-ireland")]
public NorthernIreland NorthernIreland { get; set; }
}
そして、この方法でそれをdeserialise:
JavaScriptSerializer
よりよい選択を使用しないでください
おかげ
廃止予定のJavaScriptSerializerを使用しないでください。 Web APIでもJson.NETを使用します。 JavaScriptSerializerは、JSonが標準化される前に作成されました。また、なぜ国や部門、イベントなど具体的なクラスではなく、辞書に非直列化しようとしていますか? –
json apiの代わりに、nager.date nugetパッケージを使用する以外は、uk [nager.date](https://www.nuget.org/packages/Nager.Date) – live2