Как передать контекст через пользовательский JsonSerializer?(Java, ObjectMapper) - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть пользовательский JsonSerializer:

new JsonSerializer<T>() {
    @Override
    public void serialize(T instance, JsonGenerator gen, SerializerProvider sp) throws IOException, JsonProcessingException
    {
        try {
            instance = someFunction(instance);
            SerializableString serializableString = new SerializedString(defaultMapper.writeValueAsString(instance));
            gen.writeRawValue(serializableString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Для моих переливов мне нужен способ передать gen.getOutputContext() в defaultMapper.writeValueAsString(instance).Есть ли способ добиться этого?Или я использую ObjectMapper неправильно?Спасибо за понимание.

РЕДАКТИРОВАТЬ: defaultMapper имеет тип ObjectMapper.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

На самом деле ObjectMapper имеет именно тот метод, который мне нужен был встроен - ObjectMapper.writeValue(JsonGenerator, T). Модифицированный (и функциональный) код из моего вопроса:

new JsonSerializer<T>() {
    @Override
    public void serialize(T instance, JsonGenerator gen, SerializerProvider sp) throws IOException, JsonProcessingException
    {
        try {
            instance = someFunction(instance);
            defaultMapper.writeValue(gen, instance)
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
0 голосов
/ 18 сентября 2018

Здесь, чтобы помочь сделать все возможное, чтобы помочь вам!

У меня нет настройки среды java, но пример использования пакета JSON Джексона приведен здесь: http://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/

Дайте мне знать, если это поможет!

В зависимости от учебника, в зависимости от того, как настроен ваш объект, вы можете использовать Object Mapper Object, используя "writeVaueAsString (object o) с методом" writerWithDefaultPrettyPrinter (), чтобы получить читаемую строку JSON

Однако это не «настраиваемый» сериализатор / десериализатор.

Подойдет ли вам это решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...