我正在使用asp.net核心web api,我是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#对象列表“businessunits”中转换“result(json format)”?
提前致谢。
答案 0 :(得分:4)
你需要等待这样的任务:
var result = await response.Content.ReadAsStringAsync();
使用var
的危险,因为它现在将类型推断为Task<string>
。如果您尝试过:
string result = response.Content.ReadAsStringAsync();
它会立即给您一个错误,指出它无法将Task<string>
强制转换为string
。
编辑:您遇到的另一个错误是,当JSON实际上是一个数组时,您试图将JSON反序列化为对象。
List<BusinessUnit> businessunits = JsonConvert.DeserializeObject<List<BusinessUnit>>(result);
答案 1 :(得分:0)
您可以尝试以下方法:
IEnumerable<BusinessUnit> result = response.Content.ReadAsAsync<IEnumerable<BusinessUnit>>().Result;
Saludos。
答案 2 :(得分:0)
您可以使用.Result转换为字符串:
string XYZ = response.Content.ReadAsStringAsync().Result;