Pour certains cas d'utilisation, j'ai besoin de convertir un POJO en un autre POJO avec le nom de différents champs. J'ai essayé d'utiliser le mappeur d'objets Jackson. Cela a fonctionné dans certaines étendues. Cependant, le résultat final n'est pas ce que j'attendais.Spring boot, Jackson Json Problème lors de la sérialisation et de la désérialisation
public class JacksonTest {
public static void main(String[] args) throws IOException{
ObjectMapper mapper = new ObjectMapper();
User user = new User("Deepak", "111", "Singapore");
UserMap newUser = mapper.convertValue(user, UserMap.class);
System.out.println("SOUT: " + newUser);
System.out.println("Jackson: " + mapper.writeValueAsString(newUser));
}
}
class User {
User(String name, String id, String address){
this.name = name;
this.id = id;
this.address = address;
}
String name;
String id;
String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
class UserMap implements Serializable {
@JsonProperty("name")
String name;
private Map<String, Object> meta = new HashMap<>();
@JsonAnyGetter
public Map<String, Object> any() {
return meta;
}
@JsonAnySetter
public void set(String name, Object value) {
meta.put(name, value);
}
@Override
public String toString() {
return "UserMap{" +
"name_new='" + name + '\'' +
", meta=" + meta.keySet().stream().map(x-> x+ ":: "+ meta.get(x)).collect(Collectors.joining(", ")) +
'}';
}
}
Si vous exécutez, la sortie serait:
SOUT: usermap {name_new = 'Deepak', meta = adresse :: Singapour, id :: 111}
Jackson: { » nom ":" Deepak "," adresse ":" Singapour "," id ":" 111 "}
J'utilise Springboot qui utilise en interne le sérialiseur jackson. Il convertit à nouveau l'objet newUser en classe d'utilisateur normale. Je veux sérialiser la chaîne dans la manière dont la classe est construite. Je veux la sortie au format SOUT.
Je comprends comment cela fonctionne. Pour certaines exigences, j'ai besoin de la manière de construire une classe d'objets. En ce moment je crée un POJO et je sens toutes ces données avant la sérialisation. – xdeepakv
@DeepakSharma Je ne comprends pas ce que vous voulez dire par "j'ai besoin de la manière de construire une classe d'objets". En outre, quel est le problème avec la création d'un POJO et le remplissage des données avant de le sérialiser? – Dave