1
resposta

Deserialização com jackson no spring

Boa tarde #outros-projetos

Alguém tem alguma dica a respeito de Deserialização comjackson no spring?

Estou com método serializer, estou tendo um erro de outOfMemory tenho que criar um deserialize, alguém tem uma dica de como posso fazer esse método.

método serialize:

    @Override
    public void serialize(final MultiEntity multiEntity, final JsonGenerator generator,
                          final SerializerProvider provider)
            throws IOException {
        generator.writeStartObject();

        for (final AdditionalField additionalField : multiEntity.getEntities()) {
            if (additionalField == null) {
                continue;
            }

            final String fieldName = additionalField.getFieldName();

            if (multiEntity.getFields().isEmpty() || multiEntity.getFields().contains(fieldName)) {
                generator.writeObjectField(fieldName, additionalField.getValue());
            }
        }
        generator.writeEndObject();
    }
1 resposta

Olá Rafael, tudo bem?

Um exemplo de serializer:

@Override
public MultiEntity deserialize(JsonParser parser, DeserializationContext context) throws IOException {
    ObjectCodec codec = parser.getCodec();
    JsonNode node = codec.readTree(parser);

    MultiEntity multiEntity = new MultiEntity();
    List<AdditionalField> entities = new ArrayList<>();

    Iterator<String> fieldNames = node.fieldNames();
    while (fieldNames.hasNext()) {
        String fieldName = fieldNames.next();
        JsonNode fieldValue = node.get(fieldName);

        AdditionalField additionalField = new AdditionalField(fieldName, fieldValue.asText());
        entities.add(additionalField);
    }

    multiEntity.setEntities(entities);
    return multiEntity;
}

Nesse caso, a classe MultiEntity é a classe que você está serializando e desserializando. Você pode adaptar o código de acordo com suas necessidades.