Partage
  • Partager sur Facebook
  • Partager sur Twitter

Désérializer un json avec type différent

Sujet résolu
    29 avril 2021 à 10:15:17

    Bonjour,

    Je développe un outil de monitoring en faisant des appels à une API du serveur.
    Je viens de me rendre compte que dans certains appel j'ai une propriété du même nom qui peut avoir un type différent (soit string soit int...)

    Comment je peux faire (sans recréer une nouvelle classe) pour indiquer que le type est soit un string soit un integer ?

    J'utilise System.Text.Json


    J'espère que je suis clair, vous pouvez mes poser des questions si vous ne comprenez pas ma demande


    EDIT : solutionné avec un JsonConverter personnalisé


    class intOrStringToStringJsonConverter : JsonConverter<string>
        {
            public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
            {
                if (reader.TokenType == JsonTokenType.Number)
                    return reader.GetInt32().ToString();
    
                return reader.GetString();
            }
    
            public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
            {
                writer.WriteStringValue(value);
            }
        }



    -
    Edité par Matioso 29 avril 2021 à 11:06:14

    • Partager sur Facebook
    • Partager sur Twitter

    Désérializer un json avec type différent

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown