私はそれにJSON配列を持つ有効なJSONオブジェクトを持っています。 JSON配列には中括弧はなく、コンマで区切られた混合型のリストが含まれています。私はリストのリストでそれをテストしてみたJson.Netを使用してJSON配列をオブジェクトに逆シリアル化する方法
class myModel
{
public int ID { get; set; }
public int Days { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string State { get; set; }
public string Page { get; set; }
public string Test { get; set; }
List<ChildModel> Rows { get; set; }
}
:複雑な配列のためのリストを持つ、私はJSONの構造を反映するクラスを作成しました
{
"ID": 17,
"Days": 979,
"Start_Date": "10/13/2012",
"End_Date": "11/12/2012",
"State": "",
"Page": 1,
"Test": "Valid",
"ROWS": [
[441210, "A", "12/31/2009", "OK", "Done", "KELLEY and Co'", "12/31/2009", "06/29/2010", "TEXAS", "Lawyers", 6, "", "<img src=\"/includes/images/Icon_done.gif\" border=\"0\" alt=\"Done\" title=\"Done\" />"],
[441151, "B", "12/31/2009", "No", "In-process", "Sage & Co", "12/31/2009", "06/29/2010", "CALIFORNIA", "Realtor", 6, "", "<img src=\"/includes/images/Icon_InProcess.gif\" border=\"0\" alt=\"In Process\" title=\"In Process\" />"]
]
}
:それはこのようになりますあまりに:
List<List<ChildModel>> Rows { get; set; }
そして、このような子モデル:
class ChildModel
{
public int ID { get; set; }
public string StatusId { get; set; }
public DateTime ContactDate { get; set; }
public string State { get; set; }
public string Status { get; set; }
public string CustomerName { get; set; }
public DateTime WorkStartDate { get; set; }
public DateTime WorkEndDate { get; set; }
public string Territory { get; set; }
public string CustType { get; set; }
public int JobOrder { get; set; }
public string Filler { get; set; }
public string Link { get; set; }
}
私のProgram.csファイルで
は、私はこのようにそれをデシリアライズしています:
using (StreamReader r = new StreamReader(@"D:\01.json"))
{
myModel items = JsonConvert.DeserializeObject<myModel>(r.ReadToEnd());
}
私はこのプログラムを実行すると、子オブジェクト(行)が常にnull
です。私は間違って何をしていますか?
あなたは 'ChildModel'がオブジェクトではなく配列としてシリアル化されていると言っていますか?シリアライゼーションはあなたのコントロールから外れていますか? –
あなたのリスト内のものとChildModelクラスの間にはマッピングがないからです。デシリアライザは、モデルのどのプロパティにどのような値を入れるべきかを知っていますか?可能であれば、シリアライゼーションを修正し、そうでなければカスタムパーサを構築し、リスト内のデータの順序を変更しないように祈ってください。 –
その配列を 'ChildModel'に非直列化するには、[C#JSON.NET - 異常なデータ構造を使用するレスポンスの逆直列化](https://stackoverflow.com/q/39461518/3744182)の' ObjectToArrayConverter 'を使用できます。 –
dbc