2017-02-17 4 views
2

Часть моего объекта ответа для моей функции Lambda - это объект, содержащий 3 массива. Для любого данного экземпляра функции только один из них будет иметь любой контент. Я использовал аннотацию @JsonInclude (я попытался использовать ее на уровне класса и выше свойств или геттеров), чтобы сообщить ObjectMapper игнорировать пустые массивы при создании ответа. Это работает на моей локальной версии, ответ содержит только один массив с данными, но когда я его разворачиваю в свою действительную функцию AWS Lambda, аннотации игнорируются, а ответ содержит 3 массива, 2 из которых пустые. Код ниже:AWS Lambda: Jackson Аннотации игнорируются при создании ответа в размещенной версии

import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonInclude.Include; 

public class PcIODataSetString { 

    @JsonInclude(Include.NON_EMPTY) 
    private EventDef[] ttEventDefs; 
    @JsonInclude(Include.NON_EMPTY) 
    private EventTag[] ttEventTags; 
    @JsonInclude(Include.NON_EMPTY) 
    private EventObj[] ttEventObjs; 

    //getters and setters 
} 

Из того, что я прочитал я думаю, это может быть проблемой версии, так как я использую ДЖЕКСОН-аннотаций-2.6.0 и, возможно, AWS использует версию 1.x для лямбда-функции? Есть ли способ заставить AWS использовать ту же версию Jackson? Яркий сабвуфер 2.6.0 присутствует в библиотеке AWS SDK, которая поставляется в моей банке.

ответ

0

Как вы указываете, AWS Java Lambda должна выполнять десериализацию объектов, переданных в ваш дескриптор, и я согласен с тем, что вы правы в том, что версии могут столкнуться.

Насколько сложно было бы перейти на другой сериализатор JSON? Я использовал Gson совсем немного, а в более новых версиях по умолчанию не должно включать в себя нулевые поля.

Чтобы сериализовать объект JSON это просто:

String jsonString = new Gson().toJson(yourObject); 

С JSON это что-то вроде:

YourObject yourObject = new Gson().fromJson(jsonString); 

Опять же, это может быть общая боль для вас, чтобы преобразовать в другой сериализатор, но он будет избегать любых зависимостей от версий библиотеки Jackson.

Смежные вопросы