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 PHP Discussion :

Classe PHP à JSON sur plusieurs niveaux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut Classe PHP à JSON sur plusieurs niveaux
    Bonjour,

    J'ai une classe PHP que j'aimerai transformer en un JSON sur plusieurs niveaux de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"interface":{"Version":"0"},"Container":[{"id":"1","Element":[{"text":"Test","id":"0"},{"text":"Toto","id":"1"}]}]}
    Dans ma classe PHP j'ai une fonction qui me retourne le JSON de mes attributs privés qui sont des tableaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (json_encode((get_object_vars($this)), JSON_UNESCAPED_UNICODE));
    Voici les attributs privés de ma classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private $interface = '';
    private $Container = array(array('id' => '1'));
    private $Element = array('text' => 'Test', 'id' => '0');
    Auriez-vous une idée de comment je pourrai procéder pour avoir un JSON similaire à celui du dessus ?

    Au plaisir de vous lire.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ce sera pas possible parce que ce que tu présentes comme résultat souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"interface":"Contenant":[{"id":"1","Element":[{"text":"Test","id":"0"},{"text":"Toto","id":"1"}]}]}
    n'est pas du JSON syntaxiquement correct...

    Sinon, tu pourras obtenir un JSON correct en utilisant un tableau ayant comme clés les noms de tes attributs et comme valeurs... ben la valeur de tes attributs puis en utilisant json_encode().
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Par défaut
    En effet,

    Je viens d'éditer le JSON souhaité en celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"interface":{"Version":"0"},"Container":[{"id":"1","Element":[{"text":"Test","id":"0"},{"text":"Toto","id":"1"}]}]}

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Avec PHP 5.4 et > tu peux implémenter l'interface JsonSerializable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class maClass implements JsonSerializable
    {
    	//Champs public/privé
     
    	public function jsonSerialize() {
            //Retourne les données que tu veux érialiser formater comme tu le souhaite
        }
    }
     
    echo json_encode(new maClass());
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [ZF 1.5] Suppression en cascade sur plusieurs niveaux
    Par Janitrix dans le forum Zend_Db
    Réponses: 12
    Dernier message: 12/05/2008, 02h38
  2. [SQL] Affichage sur plusieurs niveaux
    Par oim dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/12/2007, 14h52
  3. Réponses: 2
    Dernier message: 23/09/2007, 21h11
  4. [Hibernate] Héritage sur plusieurs niveaux
    Par srvremi dans le forum Hibernate
    Réponses: 2
    Dernier message: 31/05/2006, 18h39

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