Tapuscrit chaîne JSON à la classe
Permettez-être cette chaîne JSON:
[
{
"id": 1,
"text": "Jon Doe"
},
{
"id": 1,
"text": "Pablo Escobar"
}
]
Permettez-être de cette classe:
export class MyObject{
id: number;
text: string;
}
Comment puis-je convertir cette chaîne JSON à la liste des MyObject
?
Si je fais:
console.log(<MyObject[]>JSON.parse(json_string));
Elle retourne une liste de Object
au lieu d'une liste de MyObject
- Double Possible de Comment puis-je jeter un objet JSON pour un tapuscrit de la classe
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas nécessairement besoin d'une classe ici. Vous pouvez simplement utiliser une interface
Alors vous pouvez simplement écrire:
Si vous avez des données à partir du serveur, vous aurez probablement dans une variable de type quelconque, et vous pouvez l'affecter à un tableau de ce type et il va fonctionner comme prévu.
En caractères d'imprimerie vous n'avez pas besoin d'une classe implémentant une interface. Tout littéral d'objet qui satisfait à l'interface du contrat ne pourra le faire.
Si vos données sont toujours en lice pour vous pouvez simplement utiliser
JSON.parse(jsonString)
pour analyser la chaîne à des objets JavaScript.Voir aire de jeux ici
MyObject
type. Lorsque j'ouvre une session dans la console il dit que c'est unObject
. Ce que je fais mal?MyObject
et de cartographier les propriétés, la console de montrer laMyObject
type.Vous aurez besoin de créer un constructeur pour votre classe, et de l'appeler pour chaque élément de la liste que vous recevez.
Vous pouvez le vérifier dans la cour de récréation ici.
Il y a un problème quand MyObject a plus de 50 propriétés...
Ajouter un constructeur dans votre MyObject classe de sorte qu'elle s'étend votre objet json.
Dans votre ajax de rappel, de créer l'objet Monobjet de votre Objet json:
J'ai détaillé la solution dans ce post.
npm install --save @types/jquery
voir cette réponse.let newObject = new MyObject( JSON.parse(json) );
à la place?Un moyen de plus pour obtenir ceci:
Ou: