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