色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java json序列化父類

錢浩然1年前8瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,由于其簡單易用、易于閱讀、可讀性高等特點,被廣泛運用到程序開發中。而Java作為一種常用的編程語言,在進行JSON序列化時,經常會遇到一些問題,特別是在處理父類相關的數據時。

在Java中,一個類可以繼承另一個類,父類中可能存在一些屬性或方法,這些繼承關系在進行JSON序列化時需要特別關注。下面通過示例來講解Java JSON序列化父類的相關問題。

public class Animal {
protected String name;
protected int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Dog extends Animal {
private String breed;
public Dog(String name, int age, String breed) {
super(name, age);
this.breed = breed;
}
}

如上面所示,有一個Animal父類和一個繼承于Animal的Dog子類。為了進行JSON序列化,我們需要添加相應的依賴:

com.fasterxml.jackson.corejackson-databind2.9.8

下面我們對Dog類進行JSON序列化:

Dog dog = new Dog("Lulu", 2, "Husky");
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(dog);
System.out.println(jsonStr);

運行上述代碼會得到如下結果:

{"breed":"Husky","name":"Lulu","age":2}

從結果可以看出,Dog的屬性都能夠正常輸出。但是如果我們想輸出Dog父類Animal中的屬性呢?下面我們可以對Dog類進行逐個屬性進行處理。

public class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Dog extends Animal {
private String breed;
public Dog(String name, int age, String breed) {
super(name, age);
this.breed = breed;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
@Override
public String getName() {
return super.getName();
}
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
}

在Animal中添加了相應的getter和setter方法,在Dog中也對Animal中的getter和setter方法進行了重寫。現在再次運行JSON序列化代碼,將會得到如下結果:

{"breed":"Husky","age":2,"name":"Lulu"}

從輸出結果可以看出,Dog父類Animal中的屬性已經被序列化出來了。因此,在JSON序列化過程中,需要注意父類子類之間的關系及屬性的繼承關系,對相應的getter和setter方法進行重寫。這樣才能夠得到我們所期望的數據序列化結果。