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

JavaScript Discussion :

Parse JSON REGEX


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Homme Profil pro
    Apprenti ingenieur administrateur syst�mes
    Inscrit en
    Octobre 2012
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Apprenti ingenieur administrateur syst�mes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 67
    Par d�faut Parse JSON REGEX
    Bonjour,

    Je me trouve confront� � un probl�me que je n'arrive pas � solutionner :

    je r�cup�re un JSON du type:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    {"idIntegration":"int_160684","nom":"""EOVUR"""}
    le probl�me est que les utilisateurs mettent des doubles quotes sur certains nom comme :"""EOVUR""". Du coup je me retrouve avec un JSON mal form�, et je ne peux pas r�cup�rer les valeurs en faisant : data.nom.

    Existe t-il un regex qui permets de substituer les """ par simplement un ", ainsi que "" par ". Car oui les utilisateurs pour certaines raisons sont amen�s a utiliser ce format """ ou "" dans le nom.

    Merci

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    sur ton string avant le parse

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    jsonstring.replace(/""/,'"')
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  3. #3
    Expert confirm� Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par d�faut
    ... le probl�me est que les utilisateurs mettent des doubles quotes ...
    Non, le probl�me est qu'il n'y a pas de v�rification de ce qu'entrent les utilisateurs.

    D'une mani�re g�n�rale quand une cha�ne JSON est mal form�e, tu ne peux rien faire � part signaler le probl�me � celui qui l'a produit afin qu'il rectifie le tir.

    Faire des remplacements na�fs est une entreprise plut�t hasardeuse et rien ne te dit que �a n'aggravera pas les choses. Par exemple si j'essaie de remplacer l'�chappement par r�p�tition d'un quote par un �chappement avec un backslash:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let s=`{
        "a": [
            {"name":"to""to", "value":""},
            {"name":"titi", "value":""}
        ]
    }`;
     
    console.log(s.replace(/""/g, '\\"'));
    // {
    //     "a": [
    //         {"name":"to\"to", "value":\"},
    //         {"name":"titi", "value":\"}
    //     ]
    // }
    �a fonctionne pour une partie de la cha�ne mais �a en d�glingue une autre!

    Alors apr�s tu peux t'amuser � faire des patterns plus �labor�es, avec plus de v�rifications, mais � mon avis c'est peine perdue: parce qu'il n'y aucun moyen s�r.

  4. #4
    Membre extr�mement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par d�faut
    Citation Envoy� par SpaceFrog Voir le message
    sur ton string avant le parse
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    jsonstring.replace(/""/,'"')
    heu...
    ce serait plut�t :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
      let zo=`{"idIntegration":"int_160684","nom":"""EOVUR"""}`;
      let yo = zo.replace(/"""/g,'"');
    console.log(yo);
    mais sinon, je suis plut�t de l'avis de CosmoKnacki il faut faire les v�rif en amont, au moment de la saise.
    en cherchant un peu on doit facilement trouver sur Github du code pour valider un contenu JSON, il y a m�me des outils en ligne qui le font..

  5. #5
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par d�faut
    @Psy en effet curieusement /""/ ne fonctionne pas

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var chainerecue='{"idIntegration":"int_160684","nom":"""EOVUR"""}';
    chainerecue=chainerecue.replace(/\"+/g,'"');
    console.log(chainerecue);
    json=JSON.parse(chainerecue);
    console.log(json)
    ou
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    var chainerecue='{"idIntegration":"int_160684","nom":"""EOVUR"""}';
    chainerecue=chainerecue.replace(/["]+/g,'"');
    console.log(chainerecue);
    json=JSON.parse(chainerecue);
    console.log(json)
    [Edit]
    ha j'avais pas vu qu'il y en avait 3 ... je n'en avais vu que deux ...
    Du coup pas besoin d'�chapper ...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var chainerecue='{"idIntegration":"int_160684","nom":"""EOVUR"""}';
    chainerecue=chainerecue.replace(/"+/g,'"');
    console.log(chainerecue);
    json=JSON.parse(chainerecue);
    console.log(json)
    Voire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    chainerecue=chainerecue.replace(/""+/g,'"');
    Voire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    chainerecue=chainerecue.replace(/"{2,}/g,'"');
    Qui sont plus proches de la r�alit� de l'op�ration effectu�e et sans doute plus rapides car effectuant moins de remplacements.
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

  6. #6
    Membre actif
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2018
    Messages
    16
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 28
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2018
    Messages : 16
    Par d�faut
    Bonjour,

    J'ai peur de me tromper, mais on ne sait jamais.

    Si tu r�cup�re les donn�es directement de l'utilisateur, alors je vois pas le probl�me.

    Par contre si ton JSON est d�j� existant, le mieux est de v�rifier la string et de la reconstruire sous forme de variable tableau, puis de faire JSON.stringify, si tu n'a rien compris c'est normal.

    Code HTML : 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
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>test</title>
    </head>
    <body>
      <textarea name="text" rows="8" cols="80">
        """"""""""""""
      </textarea>
    </body>
    <script>
      let data={};
      data["1"]=document.querySelector('textarea[name="text"]').innerHTML;
      console.log(JSON.stringify(data));
      //log : {"1":"    \"\"\"\"\"\"\"\"\"\"\"\"\"\"\n  "}
    </script>
    </html>

    PS : Je pense qu�un peu plus d�explications du contexte serais les bienvenus.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 26/11/2011, 01h55
  2. Eviter le blocage du navigateur par une regex
    Par renkev dans le forum G�n�ral JavaScript
    R�ponses: 0
    Dernier message: 19/08/2011, 18h14
  3. r�cup�rer le contenu d�tecter par une regex
    Par manu f dans le forum G�n�ral Java
    R�ponses: 3
    Dernier message: 07/04/2010, 11h55
  4. [RegEx] Ensemble de Vecteurs � r�cup�rer par une Regex
    Par Iori Yagami dans le forum Langage
    R�ponses: 6
    Dernier message: 27/06/2009, 15h24
  5. R�ponses: 2
    Dernier message: 07/08/2007, 12h01

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