Обработка пользовательских свойств в JSON без обработки других свойств в пользовательском конвертереJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обработка пользовательских свойств в JSON без обработки других свойств в пользовательском конвертере

Сообщение Anonymous »

Используя 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»