使用Lambda进行首次尝试。创建代码,部署,测试工作,但是:
public String handleRequest(MyType inObj, Context context) {
// logging inObj here
}
POJO班
public class MyType {
String prop;
String otherProp;
}
在调用时,我提供以下有效负载:
{ "prop": "val1", "other_prop": "val2" }
如你所见,我想用snake_case给json。 当lambda记录时,我可以看到
inObj.prop ==“val1”
inObj.otherProp ==“null”。
当我将jSON从snake_case更改为camelCase时,它被正确地反序列化并且otherProp ==“val2”。 我尝试将@JsonProperty(“other_prop”)添加到字段中,添加getter和setter(在camelCase中)并将@JsonProperty添加到那些(随机猜测),但没有任何改变。
问:如何描述MyType类,以便AWS Lambda将其从snake_case正确反序列化为camelCase?
答案 0 :(得分:5)
请参阅http://docs.aws.amazon.com/lambda/latest/dg/java-programming-model-req-resp.html
中的注释请注意
您不应该依赖序列化的任何其他功能 框架,如注释。如果你需要自定义 序列化行为,您可以使用原始字节流来使用您的 自己的序列化。
因此,您需要从输入流序列化对象以使用注释。
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
}
}
答案 1 :(得分:0)
这看起来类似于Capitalized fields with POJO Input Handlers for Java AWS Lambda
类似于那里的答案,您可以尝试使用具有 public 字段的pojo,这些字段的名称与json字段完全相同