Je sérialisation un Tapuscrit objet de classe:contrôle de l'ordre de sérialisation JSON dactylographiée
class Geometry {
public abstract type: string;
public abstract coordinates: Coordinates | number[];
}
class Point extends Geometry {
public readonly type: string = "Point";
constructor(public coordinates: Coordinate | number[]) {
super();
}
}
utilisant JSON.stringify(new Point([10, 10]));
Jusqu'à présent, si bien, cependant, cela est inséré en fin de compte dans un GeoJSON l'objet et l'ordre des propriétés des questions. Ce que je veux est:
{"coordinates":[10,10],"type":"Point"}
Ce que j'ai besoin est:
{"type":"Point","coordinates":[10,10]}
Si vous ne spécifiez pas de public coordinates
dans le constructeur et les assignent:
constructor(coordinates: Coordinate | number[]) {
super();
this.coordinates = coordinates;
}
la le résultat est correct. Étant un minimaliste, j'essaie de faire en sorte que cela fonctionne avec le constructeur en utilisant le paramètre public.
Existe-t-il un moyen de contrôler l'ordre des propriétés dans la méthode JSON.stringify(-)
?
Donner une réponse alternative à moi-même
Le vrai problème est avec la valeur properties
d'une caractéristique (en dehors du champ d'application de la question initiale). En remplaçant la méthode toJSON
sur l'objet, il est possible de contrôler comment un objet se sérialise. J'ai ajouté le suivant à ma classe Geometry
et tout allait bien.
public toJSON() {
return {
type: this.type,
coordinates: this.coordinates,
};
}
je fait pour décorer mes plus en amont Feature
et FeatureCollection
les classes ainsi.
merci de me pointer dans la bonne direction et, finalement, me faire _RTFM_. – THBBFT
Content de vous aider :) –