我在asp.net核心网络api上工作,而我在asp.net核心中是新手。我制作了一个Web API,想从Web应用程序控制器中调用它,并且效果很好。我的问题是我想在c#对象列表中转换json。我已经从Web API获得json格式,但是可以将其转换为c#对象列表。我在Google上搜索了很多,然后在各处找到一种解决方案,那就是
JsonConvert.DeserializeObject<BusinessUnit>(result);
Run Code Online (Sandbox Code Playgroud)
这对我不起作用。我的代码:
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync(baseAddress + "/api/BusinessUnit");
var result = response.Content.ReadAsStringAsync();
List<BusinessUnit> businessunits = JsonConvert.DeserializeObject<BusinessUnit>(result); //result shows error because it needs string as parameter.
Run Code Online (Sandbox Code Playgroud)
我仍在尝试,但可以解决此问题。如何在c#对象列表“ businessunits”中转换“结果(json格式)”?
提前致谢。
您需要像这样等待任务:
var result = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
使用的危险var,因为现在推断类型为Task<string>。如果您尝试过:
string result = response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
它会立即给您一个错误,它无法Task<string>转换string。
编辑:您有另一个错误是您试图将JSON反序列化为一个对象时,实际上是一个数组。
List<BusinessUnit> businessunits = JsonConvert.DeserializeObject<List<BusinessUnit>>(result);
Run Code Online (Sandbox Code Playgroud)
这样.NET Core做是这样的:
var units = await result.Content.ReadFromJsonAsync<List<BusinessUnit>>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14671 次 |
| 最近记录: |