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

如何通过代码/项目判断Azure函数使用的JSON序列化方式?

如何判断Azure Functions项目默认使用的JSON序列化方式

当未在对象上添加任何序列化特性时,Azure Functions的JSON序列化方式由**托管模式(进程内/隔离进程)**决定,可通过以下代码/项目特征直接判断:

1. 识别函数的托管模式特性

  • 进程内(In-Process)模式:
    函数类使用[FunctionName]特性(来自Microsoft.Azure.WebJobs命名空间),函数通常定义为静态方法,直接通过HttpRequest处理请求。
    示例代码片段:

    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    

    此模式默认使用Newtonsoft.Json进行序列化。

  • 隔离进程(Isolated)模式:
    函数类使用[Function]特性(来自Microsoft.Azure.Functions.Worker命名空间),函数类为实例类(通过构造函数注入依赖,比如ILogger),基于Functions Worker SDK处理请求。
    示例代码片段:

    [Function("Function1")]
    public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
    

    此模式默认使用System.Text.Json进行序列化。

2. 检查项目依赖的NuGet包

  • 进程内项目:默认引用Microsoft.NET.Sdk.Functions包,会间接依赖Newtonsoft.Json,可在.csproj文件或NuGet包管理器中查看。
  • 隔离进程项目:默认引用Microsoft.Azure.Functions.Worker.Sdk和Microsoft.Azure.Functions.Worker包,默认依赖System.Text.Json。

3. 观察代码中的默认序列化调用

  • 进程内项目的模板代码中,会默认使用Newtonsoft.Json.JsonConvert处理请求体反序列化,比如:
    dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(requestBody);
    
  • 隔离进程项目的模板代码中,不会出现Newtonsoft.Json的直接调用,若未手动配置,全程使用System.Text.Json。

4. 查看Program.cs配置(仅隔离进程项目存在)

隔离进程项目必然包含Program.cs,默认配置如下(使用System.Text.Json):

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .Build();
host.Run();

如果项目手动切换到Newtonsoft.Json,会添加UseNewtonsoftJson()扩展方法:

.ConfigureFunctionsWorkerDefaults(builder =>
{
    builder.UseNewtonsoftJson();
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:27:33