在 Blazor Web 应用程序下检索指定 JSON 文本文件的 header 下的数据
Retrieve the data under the header of a specified JSON text file under Blazor web application
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 header 中的数据?
示例:
{
"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"
}
]
}
我只想将“student”下的数据JSON header读入一个students变量。
更新:根据永顺的回复,如果只需要“student”JSONheader里面的数据,可能就够了只创建 Student 和 Root 类:
@code {
private Student[]? students;
protected override async Task OnInitializedAsync()
{
Root? root = await Http.GetFromJsonAsync<Root>("school.json");
students = root.Student.ToArray();
}
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("student")]
public List<Student>? Student { get; set; }
}
}
您需要 Root
class。并建议将 属性 名称命名为 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;
}
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 header 中的数据?
示例:
{
"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"
}
]
}
我只想将“student”下的数据JSON header读入一个students变量。
更新:根据永顺的回复,如果只需要“student”JSONheader里面的数据,可能就够了只创建 Student 和 Root 类:
@code {
private Student[]? students;
protected override async Task OnInitializedAsync()
{
Root? root = await Http.GetFromJsonAsync<Root>("school.json");
students = root.Student.ToArray();
}
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("student")]
public List<Student>? Student { get; set; }
}
}
您需要 Root
class。并建议将 属性 名称命名为 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;
}