Получить RestEasy / Джексон, чтобы вернуть длинные, завернутые в кавычки - PullRequest
0 голосов
/ 01 апреля 2012

Javascript не может обрабатывать мои длинные значения, поэтому я хочу, чтобы RestEasy заключил их в кавычки, чтобы превратить их в строки.

Мой DTO:

public class DTO {
    Long id;
}

и я хочу, чтобы это было передано как {"id":"2394872352498"}

К сожалению, сейчас (по умолчанию) он передается как {"id":2394872352498}, что вызывает проблемы.

Я использую Джексона для сериализации данных. Спасибо за любую помощь!

1 Ответ

0 голосов
/ 01 апреля 2012

Одно решение, которое я нашел:

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.std.SerializerBase;

public class LongToStringSerializer extends SerializerBase<Long>{


    public LongToStringSerializer(Class<?> t, boolean dummy) {
        super(t, dummy);
    }

    @Override
    public void serialize(Long arg0, JsonGenerator arg1, SerializerProvider arg2)
            throws IOException, JsonProcessingException {
        arg1.writeString(arg0 == null ? null : arg0.toString());
    }

}

Затем этот сериализатор необходимо зарегистрировать:

SimpleModule simpleModule = new SimpleModule("MyModule", new Version(0, 0, 0, null));
simpleModule.addSerializer(new LongToStringSerializer(Long.class, true));
objectMapper.registerModule(simpleModule);
...