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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    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().

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 51
    Points
    51
    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 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 235
    Points
    20 235
    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());

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