J'essaie de sérialiser mes objets métier en JSON pour les consommer via une application Javascript. Le problème est que j'essaie de garder mes objets métier "purs" dans le sens où ils ne sont pas conscients de l'accès ou de la persistance des données. Il me semble que "diluer" mes objets avec une fonction toJSON() irait à l'encontre de cet objectif. D'un autre côté, l'utilisation d'un objet externe pour sérialiser mes objets métier ne fonctionnerait pas puisque je garde toutes mes variables d'instance privées. Est-ce que je m'approche complètement de ce mauvais sens?Sérialisation d'objets métier au format JSON
Répondre
Si les variables d'instance sont privées, elles ne doivent pas apparaître dans une sérialisation qui est envoyée à une application JavaScript. Par définition, si vous les sérialisez et que vous les envoyez à une application distincte, ils sont publics. Ainsi, un objet externe devrait avoir un moyen d'y accéder, probablement à travers une sorte de méthodes getter.
À quoi sert la searialisation des données dans JSON? Est-ce purement pour le reporting? Si oui, alors Brian a raison, ces variables devraient avoir des méthodes getter. Si le but de la sérialisation est de transporter les données vers une application JavaScript où elles peuvent être manipulées puis renvoyées à l'application d'origine, il est peut-être préférable de créer une classe associée servant à la sérialisation pendant que toujours en conservant une forte encapsulation.
Par exemple, en Java, vous pouvez définir une classe interne. Une instance de classe interne a un accès direct à tous les champs de l'instance de classe englobante sans avoir besoin de méthodes getter. Ou vous pouvez grouper avec un paquet (ou espace de noms) en utilisant les modificateurs d'accès corrects pour permettre l'accès par le sérialiseur, mais pas par n'importe quelle autre classe.
Ou vous pourriez utiliser la réflexion. Ou détourner la méthode toString. (Ou brillez le tout et créez une méthode toJson.)
Envisagez-vous de générer du code JSON à partir d'un code non-javascript (comme Java côté serveur)? La réponse dépend de cela: la gestion de JSON est très différente sur Javascript et, disons, sur Java. Il y a déjà une réponse par rapport à javascript, ce qui semble correct.
Si c'est sur Java, il y a des bibliothèques qui peuvent aider; par exemple (Jackson) peut désérialiser n'importe quel bean, en utilisant l'introspection de méthode getX/setX régulière; plus des annotations supplémentaires (et facultatives).
- 1. Sérialisation de l'objet au format JSON et obtention du format
- 2. Données POST au format JSON
- 3. JSON sérialisation
- 4. Sérialisation JSON dans Spidermonkey
- 5. Sérialisation de champs dans un DataSet personnalisé au format XML
- 6. Performances de sérialisation Boost: texte par rapport au format binaire
- 7. Aide sur le format JSON
- 8. Comment renvoyer un format de date spécifique au format JSON dans Grails?
- 9. JSON: Types de sérialisation dérivés de IEnumerable
- 10. Quel est le format de sérialisation de vos données?
- 11. Ecriture d'un objet au format XML
- 12. Format de retour JSON dans ASP.NET MVC
- 13. PHP: format de numéro au format local
- 14. sortie au format souhaité
- 15. Suivi au format PDF
- 16. Ajout d'attributs supplémentaires à une sérialisation ActiveRecord?
- 17. Puis-je retourner un tableau de "nombre, nombre" au format json?
- 18. Comment exposer des données au format JSON via un service Web utilisant Rails?
- 19. C# - analyse des données au format json dans des tables de hachage imbriquées
- 20. Comment passer plusieurs paramètres au format json à un service Web en utilisant jquery?
- 21. Comment analyser le format de date JSON en Perl?
- 22. Comment analyser le format de date JSON ASP.NET avec GWT
- 23. Cellules au format GridView ASP.NET
- 24. enregistrement vocal au format Ogg?
- 25. Séparer les règles métier des processus métier
- 26. ASP.NET MVC - données De retour au format HTML ou XML
- 27. Json « Parser Error » du serveur au client
- 28. Empêcher l'accès direct au service Web JSON
- 29. Comment convertir UTF-8 texte en format JSON
- 30. Bases de données utilisant JSON comme format de stockage/transport