【问题标题】:ASP.NET GET request always returns blankASP.NET GET 请求总是返回空白
【发布时间】:2021-11-20 13:41:22
【问题描述】:

我正在尝试创建一个端点以返回 JSON 响应。我尝试将其缩小到对象,我收到的只是 {} 或 [{}] 作为响应。调试后,我确认该对象已正确创建,但在返回响应时它始终为空白。下面是简化的代码,但仍然有同样的问题。任何想法我做错了什么?

[Route("{application}")]
[HttpGet]
public IActionResult Get(string application)
{
    List<RequestedSetting> requestedSettings = new List<RequestedSetting>();
    RequestedSetting rs = new RequestedSetting("foo", "bar");
    requestedSettings.Add(rs);
    return Json(requestedSettings);
}

public class RequestedSetting
{

    public string Name;
    public string Value;

    public RequestedSetting(string name, string value)
    {
        Name = name;
        Value = value;
    }
}

我也试过这个:

[Route("{application}")]
[HttpGet]
public List<RequestedSetting> Get(string application)
{
    List<RequestedSetting> requestedSettings = new List<RequestedSetting>();
    RequestedSetting rs = new RequestedSetting("foo", "bar");
    requestedSettings.Add(rs);
    return requestedSettings;
}

【问题讨论】:

  • 这里的代码不可能什么都不返回。一定有其他东西你没有向我们展示。您在调试时是否单步执行了代码?您确定正在调用此方法吗?
  • @DavidG 我已经添加了测试的截图。
  • RequestedSetting 类是什么样的?您有任何自定义模型绑定器或序列化代码吗?
  • 正如@DavidG 所说,您必须检查 RequestedSetting 类的序列化。数组不为空,因为 {} 表示添加的对象序列化错误。
  • @DavidG,我已经添加了课程。

标签: asp.net json object response


【解决方案1】:

System.Text.Json 中的字段不支持序列化。请参阅docs 了解更多信息。

改为将您的类更改为使用属性:

public class RequestedSetting
{

    public string Name { get; set; }
    public string Value { get; set; }

    public RequestedSetting(string name, string value)
    {
        Name = name;
        Value = value;
    }
}

【讨论】:

  • 哇,我现在要躲在石头下了。谢谢。
  • 在代码中间很容易错过这样的事情。
猜你喜欢
  • 2019-06-17
  • 1970-01-01
  • 2011-10-24
  • 2013-01-21
  • 2017-12-07
  • 2015-11-14
  • 2015-05-26
  • 2022-11-14
  • 2021-02-03
相关资源
最近更新 更多