3
respostas

[Dúvida] Resposta da questão está certa?

Olá, a questão considera correta a resposta

   class Clima
{
           public string Temperatura { get; set; }
          public string Condicao { get; set; }
}

porém, o nome das propriedades escrito com a primeira letra em maiúscula deve gerar erro na execução do código? já que no json o nome das propriedades está escrito com letra minúscula.

3 respostas

Mariana,

Não, o nome da propriedade pode estar escrito com caixa alta ou caixa baixa que não gera erro, mas existem "boas práticas" que devem ser seguidas, cada empresa que você trabalhar pode ter um manual diferente. o Visual Studio "aponta" como "mensagem" que a primeira letra NÃO está em maiúscula, mas é só uma mensagem, não é um aviso e nem um erro.

Forcei um erro em um projeto que estou estudando para te mostrar. EXEMPLO:

  • Gravidade: Mensagem
  • Código: IDE1006
  • Descrição: Violação da regra de nomenclatura: Essas palavras devem começar com caracteres maiúsculos: teste
  • Projeto: CleanArchMvc.API
  • Arquivo: ...\Macoratti\CleanArchMvc\CleanArchMvc.API\Models\LoginModel.cs
  • Linha: 20
  • Estado de Supressão: Ativo

Por favor, estude as "conveções de nomenclatura" (CASES) nos links abaixo:

==============================================

VictorManhani

6 min de leitura - 11 meses atrás

Cases Existentes e Suas Linguagens Preferidas

ConvençãoOutros NomesExemploUso em Linguagem
Camel CaseDromedary CasecamelCaseVariáveis no Java ou C#
Pascal CaseCapital Case ou Capital Camel Case ou Upper Camel CasePascalCaseClasses no Java ou Python
Snake CaseUnderscore Case ou C Casesnake_caseVariáveis em Python ou PHP
Constant CaseScreaming Snake Case ou Macro Case ou Upper Case ou Scream CaseCONSTANT_CASEConstantes em Python ou C
Brochette Case-Brochette_Case-
Kebab Casecaterpillar-case ou dash-case ou hyphen-case ou lisp-case ou spinal-case ou css-case ou slug-casekebab-casePropriedades CSS ou HTML
Screaming Kebab CaseCobol Case ou Train CaseSCREAMING-KEBAB-CASE-
Flat CaseMumble CaseflatcasePackages no Java

https://www.tabnews.com.br/VictorManhani/cases-existentes-e-suas-linguagens-preferidas

==============================================

Convenções: Camel Case, Pascal Case, Snake Case, Kebab Case

Programador Viking Programador Viking 16 de janeiro de 2023

==============================================

Convenções de nomenclatura: Camel, Pascal, Kebab e Snake case

https://www.alura.com.br/artigos/convencoes-nomenclatura-camel-pascal-kebab-snake-case

==============================================

O JSON é case-sensitive.

==============================================

JSON is Case Sensitive. You Don’t Have to Be.

Keshav Murthy on March 23, 2020

[
  {
    "$1": {
      "City": "San Francisco",
      "citY": "saN fanciscO",
      "city": "san francisco"
    }
  }
]

https://www.couchbase.com/blog/json-case-sensitive-insensitive-search-index-data/

==============================================

NÃO esqueça: - Se sua dúvida foi respondida, feche o tópico, se a minha resposta foi a melhor, por favor, me pontue... é que eu adoro estes pontinhos... sou competitivo, sabia? KKKKK!!!

[]'s,

Fabio I.

Fabio, obrigada por responder ^^

Antes de postar a dúvida aqui eu testei com o próprio projeto do curso, e depois de ver a sua resposta testei novamente, mas o resultado continua sendo o mesmo: quando o nome da propriedade da classe é igual ao campo do JSON, mas com a diferença de que a propriedade está em PascalCase e o JSON está em camelCase, a resposta obtida não é a esperada...

Procurando na documentação da Microsoft encontrei a informação que ao desserializar o JSON, por padrão, a correspondência de nome de propriedade diferencia maiúsculas de minúsculas. https://learn.microsoft.com/pt-br/dotnet/standard/serialization/system-text-json/how-to?pivots=dotnet-6-0#deserialization-behavior

Então, meu questinamento permanece de por que a resposta da questão é considerada correta?

Mariana,

Puxa vida... então esta resposta deve estar errada... ou então..:

=================================================

Como habilitar a correspondência de nomes de propriedade que não diferenciam maiúsculas de minúsculas com System.Text.Json

Artigo - 26/05/2023

var options = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
};

var weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(jsonString, options);

https://learn.microsoft.com/pt-br/dotnet/standard/serialization/system-text-json/character-casing

=================================================

A pergunta não avisa se o "PropertyNameCaseInsensitive" está true ou false.

Eu sabia que o C# e o JSON são ambos case-sensitive, mas não imaginava que o "System.Text.Json" exigiria que os nomes fossem iguais, desculpe.

[]'s,

Fabio I.