Maison  >  Article  >  interface Web  >  Comment convertir des objets JSON simples en instances de classe en JavaScript ?

Comment convertir des objets JSON simples en instances de classe en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-18 12:25:30606parcourir

How to Convert Plain JSON Objects into Class Instances in JavaScript?

Casting d'objets simples en instances de classe en JavaScript

En JavaScript, lors de la réception d'objets simples d'un serveur sous forme de réponses JSON, vous pouvez rencontrer le besoin de les convertir en instances de classe typées. Cela vous permet d'accéder à des méthodes et propriétés spécifiques à la classe.

Solution :

Une approche consiste à créer un constructeur qui accepte tout objet ressemblant à une instance et le clone. Vous pouvez également implémenter une méthode statique qui convertit les objets en instances :

<code class="javascript">Person.fromJSON = function(obj) {
    // Custom code to create an instance from the object
    return ...;
};</code>

Pour votre scénario spécifique, dans lequel vous avez des objets simples avec des propriétés publiques, vous pouvez utiliser la méthode suivante :

<code class="javascript">var personInstance = new Person();
for (var prop in personLiteral) {
    personInstance[prop] = personLiteral[prop];
}</code>

Cela attribue toutes les propriétés de l'objet brut à l'instance nouvellement créée. De même, vous pouvez créer des instances Animal.

Remarque :

  • JSON ne fournit pas d'informations sur la classe, vous devez donc connaître la structure de l'objet au préalable.
  • Il est recommandé de déplacer la méthode run vers l'objet Animal.prototype plutôt que de la conserver sur chaque instance.

Exemple de code :

<code class="javascript">var persons = JSON.parse(serverResponse);
for (var i = 0; i < persons.length; i++) {
    persons[i] = Object.assign(new Person(), persons[i]); // Use Object.assign for browsers that support it
    for (var j = 0; j < persons[i].animals; j++) {
        persons[i].animals[j] = Object.assign(new Animal(), persons[i].animals[j]);
    }
}</code>

Ce code vous permettra d'utiliser des méthodes spécifiques à une classe telles que people[0].Animals[2].Run();.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn