我正在将 Azure Functions v3 从 Newtonsoft.Json
迁移到 System.Text.Json
并尝试让 camelCase 在全局范围内工作。
对于这些:
- 信号R
- 服务总线输出绑定(bind)
- 宇宙数据库
我能够显式传递 JsonSerializerOptions
或全局设置它 (SignalR),但我无法为 IAsyncCollector
这样做。
这是我的代码:
[FunctionName(nameof(SampleFunction))]
public async Task Run(
[ServiceBusTrigger(ServiceBusQueue.QueueA)] string json,
[ServiceBus(ServiceBusQueue.QueueB)] IAsyncCollector<Delivery> queueB,
[ServiceBus(ServiceBusQueue.QueueC)] IAsyncCollector<Driver> queueC,
ExecutionContext context)
{
// ... do some work
await queueB.AddAsync(objectB).ConfigureAwait(false);
// ... do some more work
await queueC.AddAsync(objectC).ConfigureAwait(false);
}
objectB
和 objectC
最终出现在服务总线中,而不是驼峰式大小写。作为解决方法,我在接收函数上将属性名称设置为不区分大小写。
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
知道如何让 IAsyncCollector
以驼峰式大小写序列化吗?
最佳答案
我建议根本不要使用 IAsyncCollector
。 IAsyncCollector
的提供程序没有很多配置旋钮:
- 序列化
- 批处理
- 重试
- 错误处理
此外,一些实现在发布之间更改了这些实现细节,但没有发出警告。出于这些原因,我建议不要使用 IAsyncCollector
,而是直接使用 API,您可以完全控制所有这些方面。 IAsyncCollector
是一个很好的抽象,但正是这种抽象性质最终使其不适合。
关于c# - 如何在 Azure Functions 中使用 IAsyncCollector 和 System.Text.Json 设置驼峰式大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66637657/