我如何 return JSON 仅来自 Azure Functions (dotnet5)

How do I return JSON only from Azure Functions (dotnet5)

我在 dotnet5 中有一组 HttpTrigger Azure Functions,我想从这些 Azure Functions return JSON。我正在使用 return new OkObjectResult(myObject) 但它没有提供 JSON 而是 JSON 在 JSON returned 的“值”元素中 即结果看起来有点像

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

与预期相反

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

我已经用不同的 return 对象走了几条路,但它们似乎总是有这些额外的值,而且 JSON 我想要 returned 通常被包裹起来在其他 JSON 的值或内容中,例如: JsonResult(我的对象)或 ContentResult() { Content = serialisedVersionOfMyObject }

我什至尝试了 HttpResponseMessage 路径;但是 运行 遇到了 HttpTrigger 的麻烦,预计 return 的 Tast

我觉得我缺少一些简单的东西;从 Azure Functions returning "just json" 的预期/期望/直接方式是什么?

Azure 函数 .net 5 returns HttpResponseData 作为 Http 触发函数的输出。更多信息 here.

文档中的文本:

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

同样,函数 returns 和 HttpResponseData object 提供用于创建 HTTP 响应的数据,包括消息 StatusCode、Headers 和可选的消息Body.

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

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

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

return response;