1

我在 dotnet5 中有一组 HttpTrigger Azure 函数,我想从这些 Azure 函数返回 JSON。我正在使用return new OkObjectResult(myObject),但这不是提供 JSON,而是 JSON 在返回的 JSON 的“Value”元素中,即结果看起来有点像

{
  "Value": {
    "MyValueOne": true,
    "MyValueTwo": 8
  },
  "Formatters": [],
  "ContentTypes": [],
  "DeclaredType": null,
  "StatusCode": 200
}

与预期相反

{
    "MyValueOne": true,
    "MyValueTwo": 8
}

我已经使用不同的返回对象走了几条路径,但它们似乎总是有这些额外的值,而我想要返回的 JSON 通常包含在值或内容中,并包含在其他 JSON 中,例如:JsonResult(myObject) 或ContentResult() { 内容 = serialisedVersionOfMyObject }

我什至尝试了 HttpResponseMessage 路径;但是遇到了 HttpTrigger 和 Tast 的预期返回的问题

我觉得我错过了一些简单的东西;从 Azure 函数返回“仅 json”的预期/期望/直接方式是什么?

4

2 回答 2

4

Azure 函数 .net 5 返回 HttpResponseData 作为 Http 触发函数的输出。更多信息在这里

文档中的文本:

HTTP 触发器将传入的 HTTP 请求消息转换HttpRequestData为传递给函数的对象。此对象提供来自请求的数据,包括标头、Cookie、身份、URL 和可选的消息正文。此对象是 HTTP 请求对象的表示,而不是请求本身。

同样,该函数返回一个HttpResponseData对象,该对象提供用于创建 HTTP 响应的数据,包括消息状态代码、标头和可选的消息正文。

在此处输入图像描述

于 2021-05-27T07:20:47.990 回答
2

如果您需要返回一个对象(序列化),请尝试这样做:

您将在 Azure 函数中有一个参数,类型和名称是 (HttpRequestData req),现在您需要使用它来创建响应:

var response = req.CreateResponse(HttpStatusCode.OK);
await response.WriteAsJsonAsync(itemData); <-- itemData = your object

return response;
于 2021-10-31T09:59:51.287 回答