ATUALIZAÇÃO [2019-12-23]: em parte devido à contribuição da comunidade vocal , esse problema foi adicionado ao roteiro do .NET 5.0.
UPDATE [2019-10-10]: se estiver interessado em ver esse comportamento implementado paraSystem.Text.Json.JsonSerializer
vá para a edição aberta do GitHub, apontada por Chris Yungmann, e pesa.
Em vez disso:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Eu gostaria de fazer algo assim:
// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
// This uses my options
JsonSerializer.Deserialize<SomeObject>(someJsonString);
// And somewhere else in the same codebase...
// This also uses my options
JsonSerializer.Deserialize<SomeOtherObject>(someOtherJsonString);
A esperança é não ter que passar uma instância dos casos JsonSerializerOptions
mais comuns e substituir a exceção, não a regra.
Conforme indicado nestas perguntas e respostas , esse é um recurso útil do Json.Net. Olhei na documentação para o System.Text.Json
bem como este repo GitHub for .NET Core. E esse aqui .
Parece não haver um analógico para gerenciar padrões de serialização JSON no .NET Core 3. Ou estou ignorando isso?
fonte
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- você está falando sobre solicitações de entrada e saída da sua API? ou solicitações e respostas a outros recursos?Respostas:
Não,
JsonSerializerOptions
não expõe as opções padrão . Se você estiver usando uma estrutura da web específica, pode haver uma maneira de especificar as configurações de (des) serialização por meio disso. Caso contrário, sugiro criar seus próprios métodos de conveniência.Veja também esta edição em aberto .
fonte
Você pode criar um método de extensão. Aqui está um exemplo
Eu uso métodos separados versus ter que criar configurações especiais, para que todas as configurações fiquem em um único local e facilmente reutilizáveis.
Em seguida, você o chama como um método em uma string, seja literal ou variável.
fonte
System.Text.Json.JsonSerializer
NET Core-3.0 sem dependências adicionais. Obrigado.System.Text.Json.JsonSerializer
. O conceito era exatamente o mesmo. Também atualizei o link de exemplo.As opções padrão não são expostas no
JsonSerializer
.NET Core 3.1. No entanto, a partir de dezembro de 2019, isso foi adicionado ao roteiro do 5.0.O lançamento do .NET 5.0 está previsto para novembro de 2020. Mas não há garantia de que esse problema específico seja solucionado a qualquer momento. Além de esperar, essas respostas sugerem soluções alternativas:
fonte
Uma solução alternativa foi proposta pelo usuário do GitHub andre-ss6 da seguinte maneira:
fonte
(Se você mudar para o Json.NET)
Prefiro e recomendo ser explícito e passar configurações para todas as chamadas, mas você pode definir padrões com DefaultSettings .
e depois
fonte
System.Text.Json
qual a serialização JSON é inserida no .NET Core 3.0. Obrigado por tomar o tempo para responder.