2016-10-20 2 views
-2

특정 json을 비 직렬화하는 데 문제가 있습니다. 웹 사이트를 수집하고 있습니다. 배열을 C#으로 JSON을 비 직렬화

{ 
    "query": { 
    "search": [ 
     { 
     "ns": 0, 
     "title": "test", 
     "snippet": "test" 
     }, 
     { 
     "ns": 0, 
     "title": "test2", 
     "snippet": "test2" 
     }, 
     { 
     "ns": 0, 
     "title": "test3", 
     "snippet": "test3" 
     }, 
     { 
     "ns": 0, 
     "title": "test4", 
     "snippet": "test4" 
     } 
    ] 
    } 
} 

내가으로 직렬화려고하는 클래스입니다 :

private void DesURL_Click(object sender, RoutedEventArgs e) 
    { 
     string url = @"https://pt.wikipedia.org/w/api.php....."; 

     var json = new WebClient().DownloadString(url); 

     var listaURL = JsonConvert.DeserializeObject<List<Query>>(json); 

    } 

이 JSON 배열로 직렬화해야한다는 오류의 코드를 실행하려고합니다. 인공 지능을 시도하는 인공 지능 JArray 당신이 배열로 바뀔 수 있기 전에 내가 deserialize 할 필요가있는 방법.

목표는 제목과 스 니펫을 문자열로 변환하여 정보를 추출하는 것입니다.

public class Rootobject 
{ 
    public Query query { get; set; } 
} 

public class Query 
{ 
    public Search[] search { get; set; } 
} 

public class Search 
{ 
    public int ns { get; set; } 
    public string title { get; set; } 
    public string snippet { get; set; } 
} 

그런 다음이 같은 역 직렬화 할 수 있습니다 : 당신을위한

var listUrl = JsonConvert.DeserializeObject<Rootobject>(json); 
+3

그리고 무엇과 같을해야합니까처럼'Query' 클래스보기? – DavidG

답변

1

는 다음과 같은 클래스를 필요로하여 JSON을 선택하고 클립 보드에 복사합니다. 이제 Visual Studio로 이동하여 메뉴, 붙여 넣기 특수을 클릭 한 다음 으로 붙여 넣기 JSON을 클래스으로 붙여 넣습니다.

public class Rootobject 
{ 
    public Query query { get; set; } 
} 

public class Query 
{ 
    public Search[] search { get; set; } 
} 

public class Search 
{ 
    public int ns { get; set; } 
    public string title { get; set; } 
    public string snippet { get; set; } 
} 

그리고 지금이 같은 deserialise 수 : 그건 당신이 줄 것이다

var listaURL = JsonConvert.DeserializeObject<Rootobject>(json); 
0

귀하의 JSON 배열이 아닙니다. 배열 값이 searchquery 개체가 포함되어 있습니다.

그래서 수업이

public class ResponseDto { 
    public QueryDto Query {get; set;} 
} 
public class QueryDto { 
    public IEnumerable<Query> Search {get; set;} 
} 

var data = JsonConvert.DeserializeObject<QueryDto>(json); 
var list = data.Query.Search.ToList(); 
관련 문제