2016-07-08 15 views
5

Pierwsze próby z Lambdą. Utworzony kod, wdrożony, prace badawcze, ale:AWS, Lambda, Java, POJO, niestandardowa nazwa właściwości json

public String handleRequest(MyType inObj, Context context) { 
    // logging inObj here 
} 

klasy POJO

public class MyType { 
    String prop; 
    String otherProp; 
} 

podczas wywoływania, daję następujące ładowności:

{ "prop": "val1", "other_prop": "val2" } 

Jak widać, chcę dać json w snake_case. Kiedy loguje lambda, widzę, że

inObj.prop == "val1"

inObj.otherProp == "null".

Kiedy zmieniam JSON z snake_case na camelCase, to jest odpowiednio deserialized i otherProp == "val2". Próbowałem dodać @JsonProperty ("other_prop") do pola, dodając getter i setter (w camelCase) i dodając @ JsonProperty do tych (losowe domysły), ale nic się nie zmieniło.

Pytanie: Jak mogę opisać klasę MyType, aby została prawidłowo sformatowana z snake_case na camelCase przez AWS Lambda?

Odpowiedz

5

patrz uwaga w http://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html

Note

Nie należy polegać na innych cech serializacji ramy takie jak adnotacje. Jeśli chcesz dostosować zachowanie serializacji , możesz użyć strumienia bajtów nieprzetworzonych do użycia własnej serializacji .

Musisz więc serializować obiekty ze strumienia wejściowego, aby korzystać z adnotacji.

http://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-stream.html

package example; 

import java.io.InputStream; 
import java.io.OutputStream; 
import com.amazonaws.services.lambda.runtime.RequestStreamHandler; 
import com.amazonaws.services.lambda.runtime.Context; 

public class Hello implements RequestStreamHandler { 
    public static void handler(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { 
     // TODO Serialize Object from inputStream 
    } 
} 
+0

Woot! To dokładnie to, czego potrzebowałem! – nterry

Powiązane problemy