我无法对某个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反序列化为数组。 Ai尝试utiilizar JArray我需要进行反序列化的方法才能变成数组。
目标是将标题和摘要转换为字符串,以便从中提取信息。
答案 0 :(得分:1)
您需要以下课程:
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);
答案 1 :(得分: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; }
}
现在你可以像这样反序列化:
var listaURL = JsonConvert.DeserializeObject<Rootobject>(json);
答案 2 :(得分:0)
您的JSON不是数组。它包含一个query
对象,其search
属性具有数组值。
所以你的班级必须看起来像这样
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();