将C#中的JSON反序列化为数组
Deserialize JSON in C# to array
我在对某个网站进行反序列化时遇到问题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"
}
]
}
}
这是我要反序列化的 class:
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 方法,我需要先进行反序列化,然后才能转换为数组。
目标是将标题和摘要转换为字符串,以便从中提取信息。
您需要以下内容类:
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);
给您的专业提示:Select 您的 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);
您的 JSON 不是数组。它包含一个 query
对象和一个具有数组值的 search
属性。
所以你的class必须看起来像这样
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();
我在对某个网站进行反序列化时遇到问题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"
}
]
}
}
这是我要反序列化的 class:
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 方法,我需要先进行反序列化,然后才能转换为数组。
目标是将标题和摘要转换为字符串,以便从中提取信息。
您需要以下内容类:
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);
给您的专业提示:Select 您的 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);
您的 JSON 不是数组。它包含一个 query
对象和一个具有数组值的 search
属性。
所以你的class必须看起来像这样
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();