Используя Genson, мне нужно добавить некоторые пользовательские свойства из пользовательского конвертера (зависит от класса). Это достигается в методе сериализации с помощью простого WriteName("customProperty"), за которым следует ctx.genson.serialize(...) с нужным объектом.< /p>
После этого шага я бы хотел, чтобы механизм сериализации свойств по умолчанию продолжал сериализацию объекта, чтобы мне не нужно было отдельно обрабатывать каждое свойство этого объекта (и обновлять пользовательский сериализатор каждый раз, когда класс меняет свойства).
Аналогично мне нужно будет правильно десериализовать мои пользовательские свойства, не обрабатывая остальные.
Я понятия не имею, как это сделать и возможно ли это вообще.
Дополнение следует
Потому что я был попросили предоставить образец... следует образец класса
public class SoSample {
String someString = "Some string";
int someInt = 42;
float someFloat = 3.14f;
List intList = List.of(6, 5, 3);
public static class SoSampleConverter implements Converter {
@Override
public void serialize(SoSample object, ObjectWriter writer, Context ctx) throws Exception {
writer.beginObject();
//write custom property
writer.writeName("customProp").writeValue("some value");
//serialize the object as usual
//???
writer.endObject();
}
@Override
public SoSample deserialize(ObjectReader reader, Context ctx) throws Exception {
reader.beginObject();
//deserialize customProp
if (reader.hasNext()) {
reader.next();
//first property should always be "customProp"
String customProp = reader.valueAsString();
//do something with "customProp"
}
//usual deserialization
SoSample o;
//???
reader.endObject();
return o;
}
}
public static void main(String[] args) {
Genson genson = new GensonBuilder()
.withConverter(new SoSampleConverter(), SoSample.class)
//other settings
.setSkipNull(false)
.useRuntimeType(true)
.useClassMetadata(true)
.useIndentation(true)
.create();
String json = genson.serialize(new SoSample());
System.out.println(json);
}
}
Запуск main должен сгенерировать что-то вроде следующего:
{
"@class":"SoSample",
"customProp":"some value",
"intList":[
6,
5,
3
],
"someFloat":3.14,
"someInt":42,
"someString":"Some string"
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-custom-c
Обработка пользовательских свойств в JSON без обработки других свойств в пользовательском конвертере ⇐ JAVA
Программисты JAVA общаются здесь
1730473982
Anonymous
Используя Genson, мне нужно добавить некоторые пользовательские свойства из пользовательского конвертера (зависит от класса). Это достигается в методе сериализации с помощью простого WriteName("customProperty"), за которым следует ctx.genson.serialize(...) с нужным объектом.< /p>
После этого шага я бы хотел, чтобы механизм сериализации свойств по умолчанию продолжал сериализацию объекта, чтобы мне не нужно было отдельно обрабатывать каждое свойство этого объекта (и обновлять пользовательский сериализатор каждый раз, когда класс меняет свойства).
Аналогично мне нужно будет правильно десериализовать мои пользовательские свойства, не обрабатывая остальные.
Я понятия не имею, как это сделать и возможно ли это вообще.
[b]Дополнение следует[/b]
Потому что я был попросили предоставить образец... следует образец класса
public class SoSample {
String someString = "Some string";
int someInt = 42;
float someFloat = 3.14f;
List intList = List.of(6, 5, 3);
public static class SoSampleConverter implements Converter {
@Override
public void serialize(SoSample object, ObjectWriter writer, Context ctx) throws Exception {
writer.beginObject();
//write custom property
writer.writeName("customProp").writeValue("some value");
//serialize the object as usual
//???
writer.endObject();
}
@Override
public SoSample deserialize(ObjectReader reader, Context ctx) throws Exception {
reader.beginObject();
//deserialize customProp
if (reader.hasNext()) {
reader.next();
//first property should always be "customProp"
String customProp = reader.valueAsString();
//do something with "customProp"
}
//usual deserialization
SoSample o;
//???
reader.endObject();
return o;
}
}
public static void main(String[] args) {
Genson genson = new GensonBuilder()
.withConverter(new SoSampleConverter(), SoSample.class)
//other settings
.setSkipNull(false)
.useRuntimeType(true)
.useClassMetadata(true)
.useIndentation(true)
.create();
String json = genson.serialize(new SoSample());
System.out.println(json);
}
}
Запуск main должен сгенерировать что-то вроде следующего:
{
"@class":"SoSample",
"customProp":"some value",
"intList":[
6,
5,
3
],
"someFloat":3.14,
"someInt":42,
"someString":"Some string"
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79147958/handling-custom-properties-in-json-without-handling-other-properties-in-custom-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия