2012-09-28 2 views
1

코드 :C# JavaScriptSerializer JSON 배열의 직렬화

string json = "[{\"Name\" : \"dan\", \"Age\" : 25, \"City\" : \"lllal\", \"About\" : \"im dan\", \"Bdate\" : \"26/06/1997\"}]"; 

JavaScriptSerializer ser = new JavaScriptSerializer(); 
List<Person> ncontacts = ser.Deserialize<List<Person>>(json); 

foreach (Person person in ncontacts) 
    listView1.Items.Add(person.Name); 

사람 클래스 :

class Person 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string City { get; set; } 
    public string About { get; set; } 
    public DateTime Bdate { get; set; } 
} 

problam리스트 뷰가 돼있 심지어 0 항목 유지한다는 것입니다 dan이 있습니다.

어떤 도움 .. 내가 디버그 tryed했는데 내가 무슨 이상한입니다 것은 내가 중단 점 한 줄을 넣어 경우 나누기 전에 ... 그 라인에 도달하지 즉, foreach 줄에 중단 점을 넣어 환영합니다, Dan

+1

Deserialize 호출 후'ncontacts'의 내용은 무엇입니까? – MrOBrian

+0

내가 그 줄에 중단 점을 넣을 때 'null'이라고 표시합니다. –

+0

null이면 Deserialize가 작동하지 않습니다. 오류가 있습니까? – MrOBrian

답변

2

날짜 문자열 26/06/1997은 역 직렬화에 유효한 형식이 아니며 코드가 예외가됩니다. public DateTime Bdate { get; set; }public string Bdate { get; set; }으로 바꾸면 작동하는 것을 볼 수 있습니다.

+0

그의 로케일에 달려 있지 않습니까? –

+0

어떻게 속성을 변경하는 대신 deserialization에 대한 올바른 형식에 맞도록 날짜 문자열을 변경할 수 있습니까? –

+0

@justnS 아니요, 수신기 로케일에 따라 직렬화를 수행해야합니다. –