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 :

XE2 utilisation du Json


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut XE2 utilisation du Json
    Bonjour,

    Je cherche à initialiser un TObjectList à l'aide du Json suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '[{"tac_id":"2","tac_lib":"Analyse"},{"tac_id":"1","tac_lib":"Autre"},{"tac_id":"7","tac_lib":"Production"}]'
    Avez-vous un exemple ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Je pense que l'article JSON de l'aide en ligne devrait t'intéresser et particulièrement à TJSONObject.Parse

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Je bloque toujours, j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    json := TJSONObject.Create;
    json.ParseJSONValue(ChaineJSon);
    ainsi que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SetLength(buf,Length(ChaineJSon)*SizeOf(Char));
    Move(ChaineJSon[1],buf[0],Length(buf));
    json := TJSONObject.Create;
    json.parse(buf,0);
    json.Size -> Donne toujours 0

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Lit cet autre article Sérialisation des objets utilisateur
    Tu dois pouvoir utiliser un TJSONUnMarshal, cela semble nécessiter des RTTI !
    C'est plutôt orienté DataSnap tout ça ! Je ne sais pas si c'est dédié à une utilisation manuelle !

    Dans la doc ParseJSONValue est une méthode de classe, essaye plutôt ceci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    json := TJSONObject.ParseJSONValue(ChaineJSon);
    Je ne sais pas si le Parse en mode binaire supporte une chaine Unicode ! Il semble plutôt prévu pour l'UTF8 !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Et avec SuperObject ?
    [ame="http://www.youtube.com/watch?v=G6WuIQTm7hE"]Delphi 2010 RTTI & JSON - YouTube[/ame]

    PS: oh excellent, je ne savais pas que ce forum intégrait directement les vidéos Youtube !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Pas de SuperObject, je voulais juste utiliser ce qui est livré avec XE2.
    En regardant le code exemple qui est fourni dans "RAD Studio\9.0\Samples\Delphi\DataSnap\JSONViewer\...", j'ai pu trouvé jsondoc.pas et jsontreeview.pas.
    Voici comment lire mon Json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    s := StripNonJson(ChaineJSon); // Vient de jsondoc
    JSONvalue := TJSONvalue.Create;
    JSONvalue := TJSONObject.ParseJSONValue(BytesOf(s),0);
    for i := 0 to TJSONArray(JSONvalue).Size - 1 do
    begin
      JSONObject:=TJSONObject(TJSONArray(JSONvalue).Get(I));
      MonObjectList.Add(TMonObj.Create(StrToInt(JSONObject.Get(0).JsonValue.Value),JSONObject.Get(1).JsonValue.Value));
    end;
    Merci pour votre aide

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JSONvalue := TJSONvalue.Create;
    JSONvalue := TJSONObject.ParseJSONValue(BytesOf(s),0);
    Attention, tu crées deux fois l'objet, tu as un risque de fuite mémoire !

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

Discussions similaires

  1. Bonne utilisation de json
    Par boo64 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 21/07/2009, 17h48
  2. [DOM] Utilisation de JSON
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/10/2008, 15h03
  3. Réponses: 8
    Dernier message: 30/06/2008, 21h06
  4. [Json] Utilisation de JSon
    Par Verboz dans le forum Autres composants
    Réponses: 1
    Dernier message: 09/01/2007, 11h47

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