使用Java和AWS Lambda函数解析JSON错误
问题描述:
我怀疑这可能隐藏了另一个问题,但不确定它是什么 - 我试图使用AWS控制台测试一个小的Lambda函数。使用Java和AWS Lambda函数解析JSON错误
public class ApplicationRunner implements RequestHandler<String, String> {
static final Logger logger = Logger.getLogger(ApplicationRunner.class);
@Override
public String handleRequest(String input, Context context) {
//code
}
}
我收到的错误是:
{
"errorMessage": "An error occurred during JSON parsing",
"errorType": "java.lang.RuntimeException",
"stackTrace": [],
"cause": {
"errorMessage": "com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: [email protected]; line: 1, column: 1]",
"errorType": "java.io.UncheckedIOException",
"stackTrace": [],
"cause": {
"errorMessage": "Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: [email protected]; line: 1, column: 1]",
"errorType": "com.fasterxml.jackson.databind.JsonMappingException",
"stackTrace": [
"com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)",
"com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:857)",
"com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:62)",
"com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)",
"com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1511)",
"com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1102)"
]
}
}
}
谁能帮助?
谢谢。
答
您有:
-
rawData
:数据是 -
rewrittenData
发送到您的lambda函数:应用变换模板 -
jsonData
数据后:的rewriteData
签名handleRequest(String input, Context context)
表示您的input
是jsonData
,而这个JSON对象是一个字符串。你是否将一个json字符串传递给你的lambda? 99.99%不是,你发送的是一个对象,所以你得到了预期的错误信息。
你想要的是扩展类RequestStreamHandler
和与签名重写功能:
@Override
public void handleRequest(final InputStream input, final OutputStream output, final Context context)
现在input
是你rewrittenData
,这是最有可能同rawData
。
+0
谢谢! :D非常有帮助 – null
你的代码在我的水晶球中有点朦胧。我不能正确阅读它。你介意在这里发布吗? – Michael
@迈克尔,考虑你的愿望。 – null
您可以将输入发布到此Lambda(事件数据)吗? – jarmod