1
resposta

Mudança de Js para Newton dando erro

Bom dia, fazendo alguns passos do video em alguns exemplos meus, fiquei com uma certa duvida quando falamos em deserealizar. Segue meu arquivo json que estou tentando reverter em objeto.

{
  "accessToken": {
    "token": "Faculdae01",
    "expiresIn": 599
  },
  "refreshToken": {
    "expiresIn": 28799,
    "token": "POO"
  }}

quando eu crio as classes dele para que possa jogar cada um em seu respectivo objeto fica assim.

public class AccessToken
    {
        public string token { get; set; }
        public int expiresIn { get; set; }
    }

    public class RefreshToken
    {
        public string token { get; set; }
        public int expiresIn { get; set; }
    }

    public class RootObject
    {
        public AccessToken accessToken { get; set; }
        public RefreshToken refreshToken { get; set; }
    }

Até aqui não tenho nenhum problema aparentemente,porem quando eu converto o json em objeto usando o "JavaScriptSerializer", ele no console.write, me retorna certo, agora se eu retorno com o newtonsoft ele me da um erro que so pega as informações do refreshtoken e não do acess.

Aqui o link com o print de como ele esta indo certo e tbm de como ele fica errado com o newtowsoft, gostaria de entender melhor o porque isso ocorrer

https://drive.google.com/file/d/1F4KtP1sUypa8wIw8cy4JSpAewXFPFDox/view?usp=sharing
https://drive.google.com/file/d/1fgIDueEb_ymj6nHnzjpD8M-9_6x-MI50/view?usp=sharing

Fico no aguardo do retorno, desde ja obrigado

1 resposta

Oi, Isac! Tudo joia?

Peço desculpas pela demora no retorno a sua mensagem.

Uma possível explicação para esse comportamento é que a estrutura do seu JSON não está exatamente igual à estrutura das suas classes. Verifique se os nomes das propriedades estão iguais, inclusive em relação a letras maiúsculas e minúsculas. Por exemplo, certifique-se de que "token" esteja escrito da mesma forma nas classes AccessToken e RefreshToken.

Outra coisa que você pode tentar é utilizar a anotação [JsonProperty] do Newtonsoft.Json para mapear as propriedades do JSON para as propriedades das classes. Por exemplo:

public class AccessToken
{
    [JsonProperty("token")]
    public string Token { get; set; }
    
    [JsonProperty("expiresIn")]
    public int ExpiresIn { get; set; }
}

public class RefreshToken
{
    [JsonProperty("token")]
    public string Token { get; set; }
    
    [JsonProperty("expiresIn")]
    public int ExpiresIn { get; set; }
}

public class RootObject
{
    [JsonProperty("accessToken")]
    public AccessToken AccessToken { get; set; }
    
    [JsonProperty("refreshToken")]
    public RefreshToken RefreshToken { get; set; }
}

Dessa forma, você estará explicitamente mapeando as propriedades do JSON para as propriedades das classes, evitando possíveis erros de mapeamento.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida.

Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo o material abaixo:

Espero que essas sugestões possam te ajudar a resolver o problema.

Bons estudos!