Jackson JSON Liste Type d'Objet
J'ai pour sérialiser JSON à partir d'une liste d'Objets. Le résultant JSON doit ressembler à ceci:
{
"status": "success",
"models": [
{
"model": {
"id": 23,
"color": "red"
}
},
{
"model": {
"id": 24,
"color": "green"
}
}
]
}
Je suis absent du type/de la touche de "modèle" quand je sérialiser ce:
List<Model> list = new ArrayList<Model>(); //add some new Model(...)
Response r = new Response("success", list); //Response has field "models"
Au lieu de cela, j'ai juste ceci:
{
"status": "success",
"models": [
{
"id": 23,
"color": "red"
},
{
"id": 24,
"color": "green"
}
]
}
Comment puis-je ajouter un "modèle" pour chaque objet, sans avoir à écrire un idiot classe wrapper avec une propriété "modèle"?
Mes classes ressembler à ceci:
public class Response {
private String status;
private List<Model> models;
//getters /setters
}
public class Model {
private Integer id;
private String color;
//getters /setters
}
Votre JSON n'est pas valide; membre de l'objet les noms doivent être cités (indice: "" est valable un Objet JSON nom de membre)
Pouvez-vous montrer votre
Fixe, thx @fge
Pouvez-vous montrer votre
Model
classe et Response
classe?Fixe, thx @fge
OriginalL'auteur raoulsson | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de façon de le faire. Vous devrez écrire votre propre
JsonSerializer
. Quelque chose commeet ensuite annoter le
models
champ afin qu'il l'utiliseCe serait sérialiser comme
Si vous êtes à la fois la sérialisation et la désérialisation cela, vous aurez besoin d'un custom deserializer.
OriginalL'auteur Sotirios Delimanolis
C'est une question un peu vieux, Mais il est sans doute plus idiomatique de la mise en œuvre de cette (je suis en utilisant
jackson-databind:2.8.8
):Définir un
ModelSerializer
(Qui s'étendStdSerializer
comme recommandé par Jackson) qui imprime votre modèle comment vous aimez et utilisez le@JsonSerialize(contentUsing = ...)
plus de votre type de collection:Pendant ce temps, dans un autre fichier:
Maintenant, vous ne sont pas liés à juste
List
s de modèles, mais peut l'appliquer àCollection
s,Set
s, Natif[]
s et même les valeurs deMap
s.OriginalL'auteur coderatchet