我正在挣扎中,我是C#的新手,我已经阅读了很多检索JSON字符串的方法,但是在任何示例中都没有提供这种方法,所以请帮忙。
这是我得到的JSON:
{
"projects": {
"0": {
"projectId": "3",
"title": "Project Title",
"excerpt": "Far Far Away from somewhere it was a place where blah blah blah",
"date": "11/04/2018"
},
"2": {
"projectId": "17",
"title": "New Project Title",
"excerpt": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula....",
"date": "25/06/2018"
},
"3": {
"projectId": "18",
"title": "Another Project Title",
"excerpt": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo\n ligula eget...",
"date": "06/07/2018"
}
}
我上了这堂课(不确定是否还可以)
public class PeopleProjects
{
public List<string> Projects { get; set; }
public string Id { get; set; }
public string Title { get; set; }
public string Excerpt { get; set; }
public string PublishedDate { get; set; }
}
我应该使用foreach之类的循环吗?如果是这样,怎么办?另外,请注意,每个项目都在一个动态数字内,该数字可以是任意数字,这确实使我发疯,请帮助
谢谢!
答案 0 :(得分:1)
在我看来,您应该具备:
public class ProjectCollection
{
[JsonProperty("projects")]
public Dictionary<string, Project> Projects { get; set; }
}
public class Project
{
[JsonProperty("projectId")]
public string Id { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("excerpt")]
public string Excerpt { get; set; }
[JsonProperty("date")]
public DateTime PublishedDate { get; set; }
}
然后您可以使用:
var collection = JsonConvert.DeserializeObject<ProjectCollection>(json);
foreach (var project in collection.Projects.Values)
{
// Use project.Id etc
}
ProjectCollection
类对应于您的“根”对象-它需要JSON中的projects
属性,然后将projects
中的每个属性视为字典中的条目。在上面的foreach
循环中,我忽略了该键,但是您始终可以使用:
foreach (var pair in collection.Projects)
{
Console.WriteLine($"{pair.Key}: {pair.Value.Id}");
}
那将打印:
0: 3
1: 17
2: 18
例如,带有示例数据。