2016-07-08 18 views
5

Thực hiện các lần thử đầu tiên với Lambda. mã được tạo ra, triển khai, công trình kiểm tra, nhưng:AWS, Lambda, Java, POJO, tên thuộc tính json tùy chỉnh

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

lớp POJO

public class MyType { 
    String prop; 
    String otherProp; 
} 

khi gọi, tôi đưa ra sau đây tải trọng:

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

Như bạn thấy, tôi muốn cung cấp json trong snake_case. Khi log lambda, tôi có thể thấy rằng

inObj.prop == "VAL1"

inObj.otherProp == "null".

Khi tôi thay đổi JSON từ snake_case thành camelCase, nó được deserialized đúng và otherProp == "val2". Tôi đã thử thêm @JsonProperty ("other_prop") vào trường, thêm getter và setter (trong camelCase) và thêm @JsonProperty vào (đoán ngẫu nhiên), nhưng không có gì thay đổi.

Hỏi: làm thế nào tôi có thể mô tả lớp MyType để lớp được deserialized từ snake_case thành camelCase bởi AWS Lambda?

Trả lời

5

Xem ghi chú trong http://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html

Note

Bạn không nên dựa vào bất kỳ tính năng khác của serialization khuôn khổ như chú thích. Nếu bạn cần tùy chỉnh hành vi tuần tự , bạn có thể sử dụng luồng byte thô để sử dụng số serial của riêng mình .

Vì vậy, bạn cần phải tuần tự hóa các đối tượng từ luồng đầu vào để sử dụng chú thích.

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! Đó chính xác là những gì tôi cần! – nterry

Các vấn đề liên quan