J'écris quelques services reposants à l'aide de Spring MVC. J'utilise jsckson mapper pour faire les conversions informatiques. Tout fonctionne bien, sauf que le JSON qu'il produit a des champs totalement non ordonnés.
pour par ex.
Si mon objet d'entité ressemble à ceci: p> Si je dispose maintenant d'une liste d'entityObjs, et je le retourne du contrôleur, le JSON a la commande mixte pour le champs par exemple:
[{Y: "ABC", Z: "XYZ", X: "DEF"}, {Y: "ABC", Z: "XYZ", X: "DEF"}] P> regardé autour de moi pour une solution mais ne trouvant aucun. Quelqu'un d'autre est confronté à ce problème? P> Merci pour l'aide p> p>
4 Réponses :
Comme les autres suggéraient, la commande ne devrait pas avoir d'importance. Néanmoins, si vous préférez certains commandes, utilisez @jsonpropertyorder code> Annotation comme:
@JsonPropertyOrder({ "x", "y", "x" })
public class EntityObj {
}
ou peut définir cela globalement objetmapper.configure (mapperfeature.sort_properties_alphabe (vrai) code>
J'ai réalisé que cela ne fonctionne pas avec des noms de variables qui commencent par des lettres majuscules. Par exemple, une variable nommée "ID" ne sera pas commandée. P>
Vous pouvez résoudre ce problème en utilisant @jsonpropertyorder ({"ID", "AutresFields"}), la touche consiste à énumérer les champs tels qu'ils se produisent dans la sortie JSON.
Je ne peux pas +1 ça assez. Jackson @jsonpropertyOrderOrder nécessite toutes les propriétés de la classe que vous souhaitez être commandée pour être chambe de chameau. N'ont pas vu cela documenté nulle part.
Si vous utilisez l'ordre alphabétique Vous et que vous utilisez un démarrage à ressort, vous pouvez ajouter ceci dans votre Application.Properties.properties code>:
Merci, mon ocd est heureux maintenant :-p
Si vous ne voulez pas définir explicitement l'ordre de champ comme fait dans la réponse acceptée, vous pouvez simplement utiliser:
@JsonPropertyOrder(alphabetic=true)
Mais pourquoi est-ce un problème? Chaque fois que j'utilisais Json, j'ai également remarqué la commande étrange, mais quand même lorsque vous y accédez plus tard, vous aurez probablement accès par «clé», de sorte que l'ordre n'aurait pas d'importance.
Bon point que cela ne devrait pas être un problème, mais je suis curieux pourquoi vous souhaitez les commander. Avez-vous une raison particulière de le faire?
Eh bien, juste pour le rendre lisible. Il n'y a pas de problème à l'analyse. J'ai des objets avec des attributs de liste. Donc, disons un objet avec une liste d'objets à l'intérieur avec d'autres attributs comme ID, nom, etc. Lorsque quelqu'un voit la réponse JSON de mon API, je préférerais leur avoir voir l'identifiant et le nom et la liste des objets et la liste des objectifs suivants .
Dupliqué possible de ordre des objets JSON, à l'aide de Jacksons ObjectMapper