У меня есть большой объект для сериализации в JSON.Для этого я использовал библиотеку gson.Объект содержит рекурсивный объект, и мне нужно создать собственный сериализатор.
Это простой пример моего объекта Java:
private class Test {
private BigInteger id;
private Date saveTime;
@OneToMany
private List<NTTDeviceTracker> nTTDeviceTrackerList;
@ManyToOne
private NTTDeviceIdentity nTTDeviceIdentity;
//getter and setter
}
public void writeJsonTest(Test test) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Test.class, device);
Gson customGson = gsonBuilder.create();
String obj = customGson.toJson(test);
}
JsonSerializer<Test> device = new JsonSerializer<Test>() {
@Override
public JsonElement serialize(Test test, Type typeOfSrc, JsonSerializationContext context) {
JsonObject obj = new JsonObject();
Gson gson = new GsonBuilder().create();
JsonElement jsonElement = gson.toJsonTree(test);
JsonObject jsonObject = (JsonObject) jsonElement;
jsonObject.remove("nTTDeviceTrackerList");
jsonObject.remove("nTTDeviceIdentity");
jsonObject.remove("saveTime");
return jsonObject;
}
};
Я бы удалил nTTDeviceTrackerList и nTTDeviceIdentity , потому что я хочу настроить синтаксический анализ json, но jsonObject.remove не работает для списка объектов / объектов.
Какможно исключить из сериализации gson какой-либо объект без исключения аннотаций или без изменения класса Test?