【发布时间】:2022-01-09 02:25:03
【问题描述】:
我有一个带有 HttpTrigger 的 Azure 函数。当返回一个带有 Pascal 大小写的对象时,序列化会将大小写更改为 Camel 大小写。
有没有一种方法可以配置默认序列化而不对每个函数的响应使用自定义序列化?
更重要的是,为什么会发生这种情况,这是一项怎样的功能?更改序列化对象的大小写是一件大事。
这里是 Http 触发函数的代码示例。当我用 Postman 调用方法时,结果是驼峰式,而类是 pascal。
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using MyService.Models;
namespace MyService.BFF
{
public static class GetWorkOrders
{
[FunctionName("GetWorkOrders")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
ILogger log)
{
var workOrders = new List<WorkOrder>()
{
new WorkOrder()
{
WorkOrderId = "1",
CustomerId = "1",
},
new WorkOrder()
{
WorkOrderId = "2",
CustomerId = "2",
}
};
return new OkObjectResult(workOrders);
}
}
}
【问题讨论】:
-
函数应用的语言是什么?您指的是 JSON 响应的大小写吗?您使用哪个模块/库进行序列化 - newtonsoft / system.text ?
-
我添加了一个代码示例并进一步说明。我正在使用 C#、.net core v 3.1
-
看看设置这个属性是否有帮助..stackoverflow.com/a/58135043/14973743
-
这将适合您的函数应用程序..,请参阅stackoverflow.com/a/64894580/14973743
-
说实话,我只是把我的模型改成了驼色。我也计划使用 CosmosDb,并且在使用 inputBindings 或触发器时,阅读文档也可能会被“骆驼化”。我仍然认为这是一个巨大的错误,通过改变大小写,序列化正在破坏不同服务之间的合同。