Я пытаюсь сериализовать производный объект, используя Gson в Kotlin, и при сериализации я получаю только атрибуты родительского класса, Gson игнорирует все атрибуты производного класса.Вот мой код:
fun main(args: Array<String>) {
val somename = Sample(1, "somename")
val car = Car(somename, 4)
val car2 = Car(somename, 4)
val vehicles = object : ArrayList<Vehicle>() {
}
vehicles.add(car)
vehicles.add(car2)
val sampleClassResponse = SampleClassResponse(1, vehicles)
val gson = Gson()
val x = gson.toJson(sampleClassResponse)
println(x)
// System.out.println(car.tyre);
}
// Базовый класс:
public class Vehicle {
int number;
String name;
}
Подкласс:
import Sample.Sample;
public class Car extends Vehicle {
int tyre;
public Car(Vehicle sample, int tyre) {
super(sample.number, sample.name);
this.tyre = tyre;
}
}
SampleResponse class
public class SampleClassResponse {
private int status;
private List<Vehicle> vehicles;
public SampleClassResponse(int status, List<Vehicle> vehicles){
this.status = status;
this.vehicles = vehicles;
}
}
Таким образом, здесь, в главном классе, когда я сериализирую ответ SampleClass, я получаю вывод в виде (с игнорируемыми значениями шин)
{"Vehicles": [{"number": 1, "name": "somename"}, {"number": 1, "name": "somename"}], "status": 1}
и когда тот же код написан на Java, я получаю вывод в виде:
{ "статус": 1, "транспортные средства": [{ "шина": 4, "номер": 1, "название": "SomeName"}, { "шина": 4, "номер": 1, "имя":" somename "}]}
Может ли кто-нибудь помочь мне выяснить, что я делаю неправильно в этом коде kotlin.
Примечание: я использовал конвертер intellij для преобразования кода в Kotlin
Вот код Java
public class MainObject {
public static void main(String[] args) {
Sample somename = new Sample(1, "somename");
Car car = new Car(somename, 4);
Car car2 = new Car(somename, 4);
ArrayList vehicles = new ArrayList<Vehicle>() {
};
vehicles.add(car);
vehicles.add(car2);
SampleClassResponse sampleClassResponse = new
SampleClassResponse(1, vehicles);
Gson gson = new Gson();
String x = gson.toJson(sampleClassResponse);
System.out.println(x);
}
}
Базовый класс:
public class Vehicle {
int number;
String name;
}
Производный класс:
public class Car extends Vehicle {
int tyre;
public Car(Sample sample, int tyre) {
this.number = sample.number;
this.name = sample.name;
this.tyre = tyre;
}
}
SampleResponse class:
public class SampleClassResponse {
int status;
List<Vehicle> vehicles = new ArrayList<>();
public SampleClassResponse(int status, List<Vehicle> vehicles){
this.status = status;
this.vehicles = vehicles;
}
}