首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从response.Content.ReadAsStringAsync()获取c#对象列表

从response.Content.ReadAsStringAsync()获取c#对象列表
EN

Stack Overflow用户
提问于 2017-03-03 16:27:58
回答 4查看 34K关注 0票数 8

我正在研究asp.net核心网络应用程序接口,我是asp.net核心的新手。我做了一个web api,想从web应用程序控制器调用它,它工作得很好。我的问题是我想转换c#对象列表中的json。我已经从web api获得了json格式,但可以将其转换为c#对象列表。我在谷歌上搜索了很多次,到处都能找到一个解决方案,那就是

代码语言:javascript
复制
  JsonConvert.DeserializeObject<BusinessUnit>(result);  

这对我不起作用。我的代码:

代码语言:javascript
复制
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.

我仍然在努力解决这个问题。如何转换c# object list中的result(json格式)?

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-03 16:38:31

您需要像这样等待任务:

代码语言:javascript
复制
var result = await response.Content.ReadAsStringAsync();

使用var的危险,因为现在它将类型推断为Task<string>。如果你尝试过:

代码语言:javascript
复制
string result = response.Content.ReadAsStringAsync();

它会立即给你一个错误,它不能将Task<string>转换为string

编辑:您遇到的另一个错误是您试图将JSON反序列化为一个对象,而它实际上是一个数组。

代码语言:javascript
复制
List<BusinessUnit> businessunits = JsonConvert.DeserializeObject<List<BusinessUnit>>(result);
票数 20
EN

Stack Overflow用户

发布于 2019-01-04 03:40:52

你可以试试这个:

代码语言:javascript
复制
IEnumerable<BusinessUnit> result = await response.Content.ReadAsAsync<IEnumerable<BusinessUnit>>();

干杯。

票数 2
EN

Stack Overflow用户

发布于 2020-04-23 19:44:13

您可以使用.Result转换为字符串:

string XYZ = response.Content.ReadAsStringAsync().Result;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42573964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档