잘 작동하는 다음 클래스를 사용하여 JSON 문자열을 루트 객체에 역 직렬화합니다.역 직렬화 중에 JSON.NET이 상속을 사용하지 않는 이유
[Serializable]
public class MoviesListRootObject
{
public int count { get; set; }
public Pagination pagination { get; set; }
public List<Response> response { get; set; }
}
이
var json = wc.DownloadString(jsonRequestURL);
var rootObj = JsonConvert.DeserializeObject<MoviesListRootObject>(json);
을 ............................................. 그러나 내가 루트 클래스 bt를 생성하고 그것을 상속하는 루트 객체를 일반화한다면, 비 직렬화 후에 null이된다 !!
[Serializable]
public class RootObject
{
public int count { get; set; }
public Pagination pagination { get; set; }
}
[Serializable]
public class MoviesListRootObject:RootObject
{
public List<MovieResponse> movieResponse { get; set; }
}
........................................... ...
var json = wc.DownloadString(jsonRequestURL);
var rootObj = JsonConvert.DeserializeObject<MoviesListRootObject>(json);
샘플 JSON 문자열을 포함하는 것이 더 좋습니다. –
http://stackoverflow.com/a/6495299/146656에 나와있는 설정을 사용하거나 http : // stackoverflow에서 제안하는대로 [JsonObject (MemberSerialization.OptIn)]을 기본 클래스 선언에 적용하십시오. .com/a/6451204/146656 둘 다 실패하는 경우이 블로그 게시물 http://dotnetbyexample.blogspot.com.au/2012/02/json-deserialization-with-jsonnet-class.html에서 맞춤 방법을 확인하십시오. – Meligy