gpt4 book ai didi

c# - 为什么 asp.net core 发送空对象作为响应?

转载 作者:行者123 更新时间:2023-12-03 14:00:38 27 4
gpt4 key购买 nike

当我在 VS 中调试代码时,我返回的城市列表中包含 3 个对象以及属性。当我调用此端点时,我收到了 3 个空对象列表项的响应。

如何解决这个问题?

型号分类:

public class City
{
public string CityName;
public string AssociatedCities;
public string Province;
public int Status;

public City(string cityName, string associatedCities, string province, int status)
{
this.CityName = cityName;
this.AssociatedCities = associatedCities;
this.Province = province;
this.Status = status;
}
}

端点:
[HttpGet]
[Route("cities")]
public ActionResult<IEnumerable<City>> GetCities()
{
return Ok(Cities);
}

这就是我调用端点的方式
getCities() {
this.http.get<City[]>('/api/wizard/cities')
.subscribe(result => {
console.log(result);
this.cities = result;
}, error => console.error('Something went wrong : ' + error));
}

我得到的回应:
Reponse Result

需要的响应:
[
{
"SearchCity": "Toronto",
"AssociatedCities": "Ajax, Whitby, Toronto, Mississauga, Brampton",
"Province": "ON",
"Status": 1
},
{
"SearchCity": "Vancouver",
"AssociatedCities": "Vancouver, Vancouver City",
"Province": "BC",
"Status": 1
}
]

我已经试过了: Fresh ASP.NET Core API returns empty JSON objects

最佳答案

基于这样一个事实,您的所有操作都是返回 Cities ,大概是在您的 Controller 上定义的属性或字段,我将在黑暗中拍摄并假设您在另一个请求中设置它并期望它仍然存在于该请求中。这不是它的工作原理。 Controller 会随每个请求一起实例化和处理,因此在请求的生命周期内设置给它的任何内容都将无法生存。结果,Cities此请求中没有任何内容,因此您会得到一个空响应。

如果您需要一个行动中的城市列表,那么您应该查询该行动中的城市。此外,就其值(value)而言,System.Text.Json 目前不支持序列化字段,正如其他人在评论中提到的那样,但您仍然可以改用 JSON.NET,它确实支持。见:https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#jsonnet-support

关于c# - 为什么 asp.net core 发送空对象作为响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com