c# - 接收 json 作为字符串始终为 null

标签 c# json .net

使用这样的端点:

        [HttpPost("[action]")]
        public async Task<ActionResult> Import([FromBody]string request)
        {
            var list = JsonConvert.DeserializeObject<List<RequestQuote>>(request);

            return NoContent();
        }

请求似乎总是为空。今天早些时候它运行了一段时间,但不确定发生了什么变化。

这是我进行调用的客户端。

  var json = JsonConvert.SerializeObject(payload);
  var data = new StringContent(json, Encoding.UTF8, "application/json");
  var response = client.PostAsJsonAsync($"{endpoint}/api/v1.0/BatchImport/Import", data);

有效负载是一个列表

即使在使用时

Import([FromBody] List<RequestQuote> request)

我也遇到同样的问题。

最佳答案

代码中有一个bug,数据被序列化了两次,第二次是当你使用PostAsJsonAsync时。试试这个

var json = JsonConvert.SerializeObject(payload);

var data = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync($"{endpoint}/api/v1.0/BatchImport/Import", data);

if (response.IsSuccessStatusCode)
    {
        var stringData = await response.Content.ReadAsStringAsync();
        var result = JsonConvert.DeserializeObject<object>(stringData);
    }

行动应该是

public async Task<ActionResult> Import([FromBody] List<RequestQuote> request)

关于c# - 接收 json 作为字符串始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70466902/

相关文章:

c# - 如何捕获 DbUpdateException 唯一异常?

c# - 图论算法

php - 来自 Android 的 POST JSON 无法在 PHP 中解码

c# - 从c#中的json字符串中查找所有出现的值

json - 确保 JSON 模式中的一个属性不为空

c# - 从具有相同属性的另一个对象创建对象

c# - 在 C# 中将对象列表转换为其接口(interface)类型

c# - 水平和垂直 Accordion

c# - 对数字文字使用 f 后缀

.net - 如何创建TabControl,以便在每个TabItem切换时呈现不同的数据