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

Python Discussion :

Problème avec jsonschema [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut Problème avec jsonschema
    Bonjour tout le monde !

    Je bloc depuis bientôt 1 jour sur la validation de schéma JSON en python, et pourtant ça marchait vendredi, je ne comprends pas…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    import json
    import jsonschema
    from jsonschema import validate
    from jsonschema import FormatChecker
    from jsonschema import Draft6Validator
     
    # Describe what kind of json you expect.
    rulesSchema = {
        "type": "object",
        "anyOf": [{"required": ["AGE", "NAME", "PHONE"]},
                  {"required": ["AGE", "NAME", "PHONE_CELL"]}],
        "properties":{"AGE": {"type": "number",
                              "minimum": 0,
                              "maximum": 130,
                              "multipleOf": 1},
                      "NAME": {"type": "string"},
                      "MAIL": {"format": "email"},
                      "FAVORITE_COLOR": {"type": "string",
                                         "enum": ["red", "blue", "yellow"]
                                        },
                      "PHONE": {"type": "string", "pattern":"^[0-9]{4}$"},
                      "CELL": {"type": "string", "pattern":"^[0-9]{4}$"},
                     },
     
    }
     
    def validateSchema(jsonData):
        try:
            validate(jsonData,rulesSchema)
        except jsonschema.exceptions.ValidationError as err:
            print ("Erreur :".format(str(err)))
            return False
        return True

    et dans mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        if validateSchema(data) == False:
            return_error('Schema JSON is not valid')
     
        return data
    Enfin, le contenu de data :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {
        "AGE": 17,
        "NAME": "DVP",
        "MAIL": "aa",
        "FAVORITE_COLOR": "red",
        "PHONE": "0000"
    }
    mon traitement s'arrête avec le message "Erreur :"

    Je deviens fou ainsi je demande votre aide.

    Merci par avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Chez-moi ton code fonctionne; Il me sort {'AGE': 17, 'NAME': 'DVP', 'MAIL': 'aa', 'FAVORITE_COLOR': 'red', 'PHONE': '0000'} (enfin toutefois j'ai du mettre en commentaire le import Draft6Validator car je ne l'ai pas chez-moi).
    Et accessoirement on ne teste pas "== False" ou "== True" ou "!= False" ou "!= True" ou "is False" ou "is True". On teste juste l'expression elle-même => if validateSchema(data) ou if not validateSchema(data).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Et comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            print ("Erreur : {}".format(str(err)))
    ?

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    Bonjour vous deux,

    Tout d'abord un grand merci d'avoir pris le temps de lire et même de tester chez vous !

    @vinsS : Le problème venait de là, il me manquait le {}… maintenant ça marche, merci infiniment.

    @Sve@r : Merci pour les conseils, je vais modifier les conditions de ce pas !

    Bon aprem à vous deux !

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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