IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Ne pas sérializer les valeurs null !


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut Ne pas sérializer les valeurs null !
    Bonjour à tous,

    J'ai un problème avec les valeurs null (des dates et double) ... Au départ, la valeur par défaut s'afficher (des jolies 0001-01-01), j'ai pensé à l'utilisation des nullable<>, mais si je n'empêche pas leur envoie, j'aurai certainement des exceptions générées lors de la désérialisation ...

    Alors je me demande s'il est possible d'empêcher la sérialization des valeur null (xsi:nil) ... J'ai exploré la piste des IsNullable:=false mais sans succès ...

    Merci d'avance
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    regarde du coté de ? , exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DateTime? DateDebut = null;
    double? valeur = null;

  3. #3
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    aussi vers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [DefaultValue(null)]
    DateTime? DateDebut = null;
     
    [DefaultValue(null)]
    double? DateDebut = null;

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    regarde du coté de ? , exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DateTime? DateDebut = null;
    double? valeur = null;
    ? et nullable<> que je cite dans mon message sont équivalent, mais le problème étant que le xml généré va contenir des xsi:nil="true" quand on lui passe une "valeur" null, ce qui provoque il me semble une exception lors de la déserialisation si on gère pas les nullable
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    c'est pour ça que j'ai fait le deuxième post...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Merci pour ta réponse

    [DefaultValue(null)] permet de définir la valeur par défaut, je ne vois pas comment il pourrait empêcher la serialisation d'une valeur null ...
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par rad_hass Voir le message
    Alors je me demande s'il est possible d'empêcher la sérialization des valeur null (xsi:nil)
    Qu'entends-tu par "empêcher la sérialisation" ? Tu as une List<DateTime?>, et tu ne veux restituer que ceux d'entre eux qui sont non nulls ? Ou tu as un objet qui contient une propriété de type DateTime? ?

    Bref, qu'as-tu en entrée, et que veux tu en sortie ?

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Qu'entends-tu par "empêcher la sérialisation" ? Tu as une List<DateTime?>, et tu ne veux restituer que ceux d'entre eux qui sont non nulls ? Ou tu as un objet qui contient une propriété de type DateTime? ?

    Bref, qu'as-tu en entrée, et que veux tu en sortie ?
    Désolé pour ce manque d'information,

    J'ai des objets à sérialiser, au départ j'avais des Types DateTime et double ... Mais lors de la création et la sérialisation de l'objet, mon XML généré contennait des 0 et des 0001-01-01 pour chaque propriété non initialisé ...

    Ma première idée était d'utiliser dans mon objet des types nullable<> (DateTime? et double?), mais cette fois j'ai à la place des valeurs par défaut des 'xsi:nill=true' ... Ce qui risque de générer des exceptions lors de la déserialisation !

    Donc ce que je veux au finale, c'est toutes les valeurs non initialisé (DateTime et Double) qu'elle ne soit pas sérialisé et que dans mon XML elle ne soit pas présente !

    Ex :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class utilisateur{
         public sting nom;
         public DateTime dteNaissance;
         public double age;
         public DateTime dteInscription;
    }

    Quand je crée un objet Utilisateur

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    utlisateur user = new utilisateur();
    user.nom = "toto";
    user.dteNaissance = new DateTime("12/02/1988");

    XML attendu :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <contactlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <utilisateur>
         <nom>toto</nom>
         <dteNaissance>1988-02-12</dteNaissance>
    </utilisateur>
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  9. #9
    Membre Expert Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Par défaut
    si tu l'as bien sérializé, en ajoutant l'attribut defautvalue à null, il n'est pas serialisé. Mais cherches ailleurs si tu veux

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    si tu l'as bien sérializé, en ajoutant l'attribut defautvalue à null, il n'est pas serialisé. Mais cherches ailleurs si tu veux
    euh j'ai fais le teste, sauf erreur de ma part ça n'a pas changé le résultat !

    Je l'ai peut être mal utilisé, je cherche ... Merci encore
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  11. #11
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par rad_hass Voir le message
    euh j'ai fais le teste, sauf erreur de ma part ça n'a pas changé le résultat !
    Je pense aussi que DefaultValue n'a rien à voir là dedans. Mais il existe en effet un certain nombre d'attributs liés à la sérialisation XML, à appliquer sur les propriétés : XmlIgnore, XmlAttribute, XmlElement... Essaie de fouiller la MSDN avec ces mots-clé

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2010, 12h33
  2. Réponses: 2
    Dernier message: 15/03/2009, 22h52
  3. Réponses: 18
    Dernier message: 09/12/2008, 10h40
  4. Ne pas renvoyer les valeurs NULL
    Par David78180 dans le forum SQL
    Réponses: 6
    Dernier message: 07/11/2008, 14h40
  5. [Excel] Ne pas tracer les valeurs nulles d'un graphe
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2006, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo