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 :

[Delphi XE] JSON : iSuperObject - Création d'un JSON multi niveau


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Par défaut [Delphi XE] JSON : iSuperObject - Création d'un JSON multi niveau
    Bonjour voici mon code (Utilisation de ISuperObject) :

    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
     aJSONChannel := SO;
     
      for J := 0 to ListTest.Count - 1 do
      begin
        aJSONChannel.S['a'] := ListTest[j].Code;
        aJSONChannel.S['b'] := ListTest[j].Valeur;
     
        // Create node "tranlsations"
        aJSONChannel.O['translations'] := SA([]);
     
        for I := 0 to ListTest[j].ListTranslation.Count-1 do
        begin
          aJSONTransaltionsLang := SO;
          aJSONTransaltionsLang.S['title'] := ListTest[j].ListTranslation[i].Title;
     
          aJSONChannel.A['translations'].Add(aJSONTransaltions);
        end;
    et voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
    	"b": "valeur",
    	"a": "code",
    	"translations": [
    	{"title" : "fr"},
    	{"title" : "en"},
    	{"title" : "de"}, 
    	{"title" : "it"}],
    }
    Ce que je veux faire c'est d'arriver à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
    	"b": "valeur",
    	"a": "code",
    	"translations": [
    	"fr" : {"title" : "fr"},
    	"en" : {"title" : "en"},
    	"de" : {"title" : "de"}, 
    	"it" : {"title" : "it"}],
    }
    Pour moi il faudrait que je rajoute un node entre {translations} et le bloc {title} , c'est à dire ajouter un objet dans un objet (un SO dans un SO)

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    ton code JSON est invalide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
    	"b": "valeur",
    	"a": "code",
    	"translations": [
    	"fr" : {"title" : "fr"},
    	"en" : {"title" : "en"},
    	"de" : {"title" : "de"}, 
    	"it" : {"title" : "it"}],
    }
    il devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
    	"b": "valeur",
    	"a": "code",
    	"translations": { // objet et non tableau !
    	"fr" : {"title" : "fr"},
    	"en" : {"title" : "en"},
    	"de" : {"title" : "de"}, 
    	"it" : {"title" : "it"}},
    }
    mais je ne sais pas comment ça se traduit en iSuperObject
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Par défaut
    Oui c'est un exemple que j'ai réalisé à la main , désolé de l'erreur.

    Finalement ce composant ne permet pas ce genre d'extraction , donc j'ai opté pour une autre stratégie.

    Merci

  4. #4
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    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
    procedure TForm3.Button1Click(Sender: TObject);
    var
      X: ISuperObject;
      A: ISuperArray;
    begin
      X := SO();
     
      X.S['b'] := 'valeur';
      X.S['a'] := 'code';
      A := X.A['translations'];
      with A.O[0] do
       O['fr'].S['title'] := 'fr';
     
      ShowMessage(X.AsJSON);
    end;
    {
    "b": "valeur",
    "a": "code",
    "translations": [
    {
    "fr": {
    "title": "fr"
    }
    }
    ]
    }


    en plus complet

    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
    var
      X: ISuperObject;
      A: ISuperArray;
    begin
      X := SO();
     
      X.S['b'] := 'valeur';
      X.S['a'] := 'code';
      A := X.A['translations'];
      with A.O[0] do
       O['fr'].S['title'] := 'fr';
      with A.O[1] do
       O['en'].S['title'] := 'en';
      with A.O[2] do
       O['de'].S['title'] := 'de';
     
      ShowMessage(X.AsJSON);
    end;

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Par défaut
    Merci pour votre réponse mais j'ai choisi une autre solution qui reprend ,sur le fond, le même algo que votre solution.

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

Discussions similaires

  1. Création d'objet JSON et WCF
    Par zwark dans le forum Services Web
    Réponses: 0
    Dernier message: 03/09/2015, 14h58
  2. Création d'un json trop long
    Par Invité dans le forum C#
    Réponses: 2
    Dernier message: 25/08/2014, 10h43
  3. Erreur a la création d'un Json
    Par maxusn dans le forum Langage
    Réponses: 2
    Dernier message: 27/11/2012, 16h42
  4. [AJAX] Ajax et Json - création d'un .json par PHP
    Par versus68 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2008, 17h18
  5. Création de fichier json avec PHP
    Par versus68 dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2008, 11h56

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