1
對於一些使用情況下,我需要一個POJO轉換爲另一種POJO與不同領域的名稱。我嘗試使用Jackson對象映射器。它在一定程度上起作用。但最終的結果不是我所期望的。春天開機,傑克遜的Json問題,而序列化和反序列化
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(", ")) +
'}';
}
}
如果你運行,輸出將是:
SOUT:用戶映射{name_new = '迪帕克',元=地址::新加坡,ID :: 111}
傑克遜:{」命名 「:」 迪派」, 「地址」: 「新加坡」, 「ID」: 「111」}
我使用Springboot內部使用傑克遜串行器。它再次轉換NEWUSER對象以普通用戶級。我想以類構造的方式序列化字符串。我想要SOUT格式的輸出。
我瞭解其工作。對於某些需求,我需要的是構造對象類。現在我正在創建一個POJO,並在序列化之前感受所有這些數據。 – xdeepakv
@DeepakSharma我不明白你的意思是「我需要的是構建對象類」。另外,創建POJO並在序列化之前填入數據有什麼問題? – Dave