Blazor-检索指定JSON文件头下的数据



GetFromJsonAsync方法可用于将JSON文件中的数据读取到Blazor web应用程序中的变量中。该方法适用于简单的JSON文件。

GetFromJsonAsync方法示例:

@code {
private Students[]? students;
protected override async Task OnInitializedAsync()
{
students = await Http.GetFromJsonAsync<Students[]>("school.json");
}
public class Students
{
public int id { get; set; }
public string? name { get; set; }
public string? lastname { get; set; }
}
}

我的问题是,如何只读取给定JSON标头中的数据?

示例:

{
"book":[
{
"id":"444",
"language":"C",
"edition":"First",
"author":"Dennis Ritchie "
},
{
"id":"555",
"language":"C++",
"edition":"second",
"author":" Bjarne Stroustrup "
}
],
"student": [ 
{ 
"id":"01", 
"name": "Tom", 
"lastname": "Price" 
}, 
{ 
"id":"02", 
"name": "Nick", 
"lastname": "Thameson" 
} 
]     
}

我只想阅读";学生;JSON标头转换为students变量。

您需要一个Root类。并建议将属性名称命名为Pascal大小写,并使用JsonPropertyName属性

public class Book
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("language")]
public string Language { get; set; }
[JsonPropertyName("edition")]
public string Edition { get; set; }
[JsonPropertyName("author")]
public string Author { get; set; }
}
public class Student
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("lastname")]
public string Lastname { get; set; }
}
public class Root
{
[JsonPropertyName("book")]
public List<Book> Book { get; set; }
[JsonPropertyName("student")]
public List<Student> Student { get; set; }
}

将JSON反序列化为Root对象。

protected override async Task OnInitializedAsync()
{
Root root = await Http.GetFromJsonAsync<Root>("school.json");
students = root.Students;
}

最新更新