我有一个aws API,它连接到用JAVA.in API网关编写的AWS-LAMBDA。在Integration响应中我从上下文变量传递一些json字符串 如下所示
#set($inputRoot = $input.path('$'))
{
"UserID":"$context.authorizer.claims.sub",
"Identity":"$context.identity.cognitoIdentityId",
"Account ID":"$context.identity.accountId",
"UserID2":"$context.authorizer.claims.email"
}
但是在我的lambda函数中,我尝试读取这些值,如下所示。
context.getLogger().log("Input or Query String"+ input);
它正在读取完整文本而不是json格式的问题。它给我一个类似下面的格式。
Input or Query String{UserID=379fa501-0028-XXXX-a1c2-f0c54691b4d3, Identity=XX, Account ID=XX, UserID2=XXXXXXX@gmail.com}
如何将此转换为json格式..?
答案 0 :(得分:1)
AWS传入Java Lambda函数的JSON将是Map<String, Object>
类型的Map。 logger类将传入的对象序列化为一个字符串,所以当你查看日志中的输入时,它看起来就像一个json字符串,即使它不是。
试试这个:
public class LambdaFunctionHandler implements RequestHandler<Object, Object>{
@Override
public Object handleRequest(Object input, Context context) {
Map<String, Object> mappedInput = (Map<String, Object>)input;
context.getLogger().log("User ID: " + mappedInput.get("UserID"));
}
你显然想要使用比我在这里所包含的更多的类型检查。
答案 1 :(得分:0)
您需要将字符串解析为json,下面的链接是一些简单的方法。 http://www.java67.com/2016/10/3-ways-to-convert-string-to-json-object-in-java.html?m=1