Jun*_*aid 1 c# json.net asp.net-core asp.net-core-webapi blazor
我正在开发 Blazor 应用程序。我有一个 API 方法,它返回一个List<Tuple<string,int>>.
Postman 中的 API 响应:
[
{
"Item1": "1",
"Item2": 1
},
{
"Item1": "24",
"Item2": 2
}
]
Run Code Online (Sandbox Code Playgroud)
剃刀页面中的 API 调用:
private object dataSource;
protected override async Task OnInitializedAsync() {
dataSource = await Http.GetJsonAsync<List<Tuple<string,int>>>("/Api/Default/GetProjectsList");
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Deserialization of reference types without parameterless constructor is not supported.
Run Code Online (Sandbox Code Playgroud)
我理解错误。
是否有可以解析的泛型类型GetJsonAsync也可以从 API 方法返回?
或者有没有办法解析这个元组?请帮我。
这是使用新的System.Text.Json. 看官方文档?
不支持对没有无参数构造函数的引用类型进行反序列化。
由于Tuple<string,int>没有无参数构造函数,所以它失败了。
作为一种解决方法,您可以使用Newtonsoft.Json目前的经典反序列化元组:
var resp = await Http.GetStringAsync("/Api/Default/GetProjectsList");
var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Tuple<string,int>>>(resp);
foreach(var i in list){
Console.WriteLine("--------");
Console.WriteLine(i.Item1);
Console.WriteLine(i.Item2);
Console.WriteLine("--------");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |