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

Langage Delphi Discussion :

[JSON] : éviter de sérialiser les propriétés numérique non renseignées


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut [JSON] : éviter de sérialiser les propriétés numérique non renseignées
    Bonjour,

    je suis sous Delphi Tokyo.

    J'utilise la fonction TJson.ObjectToJsonString(MonObjet, [TJsonOption.joIgnoreEmptyStrings,joIgnoreEmptyArrays]); pour produire du JSON.
    Jusque là ça va.
    Quand je ne renseigne pas les propriété String de mon objet, ça va elle ne sont pas présentes dans le JSON.

    Le problème se corse quand je ne veux pas utiliser le propriétés numériques (en l’occurrence entier) de mon objet, car dans ce cas si je n'affecte pas leur valeurs, elle sont quand même présente dans le JSON mais avec une valeur à .

    Imaginez que je doivent passer en paramètre une taille de debut et une taille de fin comme paramètres (entre autres) pour une recherche, du coup je demande au serveur de me trouver les Eléments qui ont une taille comprise entre 0 et 0.
    Alors que si cette propriété n'est pas presente, il ignore cette partie , et tient compte des autre paramètres.

    Quelqu'un à une idée pour demander à ignorer les propriétés "nulle" des entiers ? (notez le" "", un entier n'est pas nul, je precise avant qu'on me prenne pour un idiot ).

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    En général, soit l'on ignore le Zéro soit l'on utilise la valeur -1 comme étant une valeur vide, typique par exemple avec un ItemIndex
    Ce n'est pas un problème de sérialisation mais plutôt un problème de gestion des paramètres de ta fonction de recherche.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    Merci de ta réponse.

    je ne l'ai pas précisé mais, la partie serveur je ne la maîtrise pas car c'est pas moi qui l'ai conçue.

    je suppose que tu parlais du traitement de ces valeurs coté serveur ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Alors là, effectivement cela change des choses !
    Je parlais évidemment côté serveur, si celui-ci ne gère pas de valeur neutre mais que l'absence de valeur cela t'oblige à générer toi même le JSON pour qu'il soit conforme aux spécifications du Serveur
    Cela n'a rien de bien compliqué

    Tu peux le bidouiller rapidement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ojb := TJson.ObjectToJsonObject(...); 
    Ojb.RemovePair('start');
    Ojb.RemovePair('end');
    ShowMessage(Ojb.ToString);

    Sinon, à la main, tu utilises Data.DBXJSON.TJSONObject (ça c'était le nom en XE2) avec un AddPair tu ajoutes tes clés\valeurs de ce qu'il faut uniquement sérialiser
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    Effectivement avec le RemovePair ça fait bien ce que je veux.
    Merci en core pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/03/2015, 11h53
  2. [XL-2007] Macro pour vérifier les cellules obligatoire non renseignées
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 05/10/2013, 11h35
  3. Réponses: 2
    Dernier message: 04/04/2013, 12h45
  4. [PHP 5.2] [POO] Propriétés statiques non partagées par les classes filles
    Par gege2061 dans le forum Langage
    Réponses: 5
    Dernier message: 08/09/2009, 15h25

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