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

VB.NET Discussion :

Efface un élement d'un fichier Json


Sujet :

VB.NET

  1. #1
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut Efface un élement d'un fichier Json
    Bonjour j'ai un fichier Json "utilisateur" dans lequel je veux supprimer un utilisateur complet. J'ai un code qui convertit le fichier Json en Jarray pour faire un removeAt(), cela a l'air de fonctionner puisque le nombre d'élément n'est pas le même avant le removeAt et après (j'en ai bien un de moins), par contre mon fichier json n'est pas mis à jour, quelqu'un a t'il une idée pourquoi (certainement faut-il sauver les modifications dans le json) ? Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim jsonString As String = File.ReadAllText("..\..\Datas\datas.json")
                Dim jsonObject As JObject = JObject.Parse(jsonString)
     
                MessageBox.Show(TryCast(jsonObject("utilisateurs"), JArray).Count)
     
                TryCast(jsonObject("utilisateurs"), JArray).RemoveAt(0)
     
                MessageBox.Show(TryCast(jsonObject("utilisateurs"), JArray).Count)

    fichier json :
    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
     {
        "utilisateurs": [
          {
            "gender": "male",
     
            "name": {
              "title": "Mr",
              "first": "Titouan",
              "last": "Martinez"
            },
         },
     
          {
            "gender": "female",
            "name": {
              "title": "Miss",
              "first": "Mia",
              "last": "Lopez"
            },
            }, .....
    j'suis vert !

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    Bon j'ai trouvé, ca fonctionne, ca m'efface bien le "BLOC 0" mais le problème c'est que ca m'efface aussi la ligne "utilisateurs", une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TryCast(jsonObject("utilisateurs"), JArray).RemoveAt(0)
    File.WriteAllText("..\..\Datas\datas.json", jsonObject("utilisateurs").ToString)
    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
    {
        "utilisateurs": [  <-- LE CODE M'EFFACE CETTE LIGNE AUSSI !
    // BLOC 0
          {
            "gender": "male",
     
            "name": {
              "title": "Mr",
              "first": "Titouan",
              "last": "Martinez"
            },
         },
     
     // BLOC 1
          {
            "gender": "female",
            "name": {
              "title": "Miss",
              "first": "Mia",
              "last": "Lopez"
            },
            }, .....
    Règles de messages
    j'suis vert !

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 675
    Points : 5 260
    Points
    5 260
    Par défaut
    C'est normal, tu transforme ton Objet en Array et tu enlève le seul élément de cet Array...
    En gros {"utilisateurs": [...]} devient [{"utilisateurs": [...]}], et tu enlèves l'unique élément de ce nouveau tableau.

    Ce qu'il faut récupérer ce sont les items dans utilisateurs.
    Et ce sont sur ces items qu'il te faut enlever celui à la position 0

  4. #4
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    bonjour, ok merci pour ta réponse, c'est bizarre, comment il arrive alors à supprimer que le Bloc que je veux. Si le tableau n'a qu'un seul élément, il devrait me vider le fichier complétement.
    Dans mon exemple je donne le bloc 0, mais c’a fait la même chose si je supprime un autre bloc.

    En plus je vois pas quelle référence utiliser autre que "utilisateurs" pour faire mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TryCast(jsonObject("utilisateurs"), JArray).RemoveAt(0)
    j'suis vert !

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 675
    Points : 5 260
    Points
    5 260
    Par défaut
    Citation Envoyé par HULK Voir le message
    c'est bizarre, comment il arrive alors à supprimer que le Bloc que je veux. Si le tableau n'a qu'un seul élément, il devrait me vider le fichier complétement.
    Oui, effectivement j'ai lu un peu trop vite.
    Le TryCast(jsonObject("utilisateurs"), JArray) renvoie bien le tableau à l'intérieur et du coup, ça supprime bien le premier.

    Du coup, ton problème est que c'est justement tableau que tu remets dans le fichier et non l'objet entier.
    Donc il faut remplacer ceci File.WriteAllText("..\..\Datas\datas.json", jsonObject("utilisateurs").ToString) par ceci File.WriteAllText("..\..\Datas\datas.json", jsonObject.ToString).

Discussions similaires

  1. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  2. Effacer LE CONTENU d'un fichier
    Par Spartan03 dans le forum Windows
    Réponses: 1
    Dernier message: 19/10/2005, 20h20
  3. Effacer le contenu d'un fichier texte...
    Par loupdeau dans le forum MFC
    Réponses: 2
    Dernier message: 09/05/2005, 15h28
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Effacer le contenu d'un fichier a partir d'une ligne
    Par localhost dans le forum Linux
    Réponses: 3
    Dernier message: 04/04/2004, 04h47

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