You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure函数输出为何被包裹在{"updatedBody":}结构中?代码逻辑疑问解析

我来帮你理清这个逻辑,核心问题出在C#匿名类型的语法和OkObjectResult的序列化行为上:

为什么输出会被包裹在{"updatedBody":}结构里?

  1. C#匿名对象的语法糖
    你代码里的new { updatedBody }是C#的简写语法,完全等同于new { updatedBody = updatedBody }——它会创建一个匿名类型的对象,这个对象包含一个名为updatedBody的属性,属性值就是你之前处理好的updatedBody变量内容。

  2. OkObjectResult的序列化行为
    Azure函数里的OkObjectResult会自动把传入的对象序列化为JSON格式。当你传入这个匿名对象时,JSON序列化器就会把它转换成{"updatedBody": "清理后的文本内容"}这样的结构,这就是你看到的包裹效果。

关于你预期的输出补充

你的测试输入是{"name": "<p><p>Testing my function</br></p></p>"},但函数里是直接读取整个请求体作为emailBodyContent,所以清理后得到的是去掉HTML标签的{"name": "Testing my function"}字符串,然后这个字符串被放到了匿名对象的updatedBody属性中,最终输出就是{"updatedBody":"{\"name\": \"Testing my function\"}"}(转义是JSON序列化的正常结果)。

如果想直接返回清理后的内容怎么办?

如果你不想让结果被updatedBody包裹,直接返回清理后的字符串,可以修改返回语句:

// 直接返回纯文本(Content-Type为text/plain)
return new OkObjectResult(updatedBody);

// 或者返回自定义结构的JSON(比如匹配你预期的格式)
return new OkObjectResult(new { name = updatedBody });

内容的提问来源于stack exchange,提问作者simonalexander2005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:09:07