Estoy migrando Azure Functions v3 de Newtonsoft.Json
a System.Text.Json
y tratando de que camelCase funcione globalmente.
Para éstos:
Pude pasar explícitamente JsonSerializerOptions
o configurarlo globalmente (SignalR) pero no puedo hacerlo para IAsyncCollector
.
Aquí está mi código:
[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
y objectC
terminan en el bus de servicio, no con la caja de camellos. Como solución, estoy configurando los nombres de las propiedades como mayúsculas y minúsculas en la función de recepción.
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, PropertyNameCaseInsensitive = true
¿Alguna idea de cómo puedo hacer que IAsyncCollector
se serialice con camel case?
Recomiendo no usar IAsyncCollector
en absoluto. Los proveedores de IAsyncCollector
no tienen muchas perillas para la configuración:
Además, algunas implementaciones han cambiado estos detalles de implementación entre versiones sin previo aviso. Por estas razones, recomiendo nunca usar IAsyncCollector
y solo usar las API directamente, donde tiene control total sobre todos estos aspectos. IAsyncCollector
es una buena abstracción, pero es precisamente esa naturaleza abstracta lo que lo hace inadecuado al final.