Java Lambda函数输出为对象
我们目前收到的AWS lambda响应如下:Java Lambda函数输出为对象,java,amazon-web-services,aws-lambda,Java,Amazon Web Services,Aws Lambda,我们目前收到的AWS lambda响应如下: "{\"retailers\":[{\"address\":\"a\",\"retailerId\":1}, {\"address\":\"b\",\"retailerId\":2}] ,\"status\":{\"code\":200,\"type\":\"OK\",\"message\":\"Success\"}}" 响应在API网关上使用代码片段转换为json: $util.escapeJavaScript("$input.path('$
"{\"retailers\":[{\"address\":\"a\",\"retailerId\":1},
{\"address\":\"b\",\"retailerId\":2}]
,\"status\":{\"code\":200,\"type\":\"OK\",\"message\":\"Success\"}}"
响应在API网关上使用代码片段转换为json:
$util.escapeJavaScript("$input.path('$')").replaceAll("\\","")
如何从lambda函数直接生成json输出,并在不使用escapeJavaScript
函数的情况下作为响应主体
public class GetRetailerInfo implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
try{
JSONObject parameters=new JSONObject(input.toString());
return APIUtil.getretailer(parameters,context).toString();
}
catch(Exception e){
e.printStackTrace();
}
return "Unable to process the request. "+input;
}
}
公共类GetRetailerInfo实现RequestHandler{
@凌驾
公共字符串handleRequest(对象输入,上下文){
试试{
JSONObject参数=新的JSONObject(input.toString());
返回APIUtil.getretailer(参数,上下文).toString();
}
捕获(例外e){
e、 printStackTrace();
}
返回“无法处理请求”。+输入;
}
}
通过向您提供POJO作为通用输入和输出参数RequestHandler
实现,AWS Lambda将为您处理JSON和Java之间的序列化和反序列化。以下示例摘自《AWS Lambda开发人员指南》中的:
package example;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.Context;
public class Hello implements RequestHandler<Request, Response> {
public Response handleRequest(Request request, Context context) {
String greetingString = String.format("Hello %s %s.", request.firstName, request.lastName);
return new Response(greetingString);
}
}
该方法返回一个响应对象,如下所示:
{
"greetings": "Hello value1 value2."
}
请按照上面的链接查看完整示例,包括请求
和响应
类的实现
{
"greetings": "Hello value1 value2."
}