我正在研究asp.net核心网络应用程序接口,我是asp.net核心的新手。我做了一个web api,想从web应用程序控制器调用它,它工作得很好。我的问题是我想转换c#对象列表中的json。我已经从web api获得了json格式,但可以将其转换为c#对象列表。我在谷歌上搜索了很多次,到处都能找到一个解决方案,那就是
JsonConvert.DeserializeObject<BusinessUnit>(result);
这对我不起作用。我的代码:
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格式)?
提前谢谢。
发布于 2017-03-03 16:38:31
您需要像这样等待任务:
var result = await response.Content.ReadAsStringAsync();
使用var
的危险,因为现在它将类型推断为Task<string>
。如果你尝试过:
string result = response.Content.ReadAsStringAsync();
它会立即给你一个错误,它不能将Task<string>
转换为string
。
编辑:您遇到的另一个错误是您试图将JSON反序列化为一个对象,而它实际上是一个数组。
List<BusinessUnit> businessunits = JsonConvert.DeserializeObject<List<BusinessUnit>>(result);
发布于 2019-01-04 03:40:52
你可以试试这个:
IEnumerable<BusinessUnit> result = await response.Content.ReadAsAsync<IEnumerable<BusinessUnit>>();
干杯。
发布于 2020-04-23 19:44:13
您可以使用.Result转换为字符串:
string XYZ = response.Content.ReadAsStringAsync().Result;
https://stackoverflow.com/questions/42573964
复制相似问题