![](/img/trans.png)
[英]Capitalized fields with POJO Input Handlers for Java AWS Lambda
[英]Parsing the input in a AWS Lambda handleRequest into a POJO
我正在開發Alexa技能,並且在解析輸入事件時Lambda(用Java編寫)中存在一些問題。
我的蘭巴班是這樣的
public class AWSLambdaLaunch implements RequestHandler<RequestEnvelope, ResponseEnvelope>{
@Override
public ResponseEnvelope handleRequest(RequestEnvelope requestEnvelope, Context context) {
//...
}
}
但是我收到以下錯誤
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.amazon.ask.model.RequestEnvelope]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@543c6f6d; line: 1, column: 2]
No suitable constructor found for type [simple type, class com.amazon.ask.model.RequestEnvelope]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@543c6f6d; line: 1, column: 2]
因此,我認為問題是沒有辦法將輸入對象從com.amazon.ask.model.RequestEnvelope解析為RequestEnvelope對象。
我也嘗試了com.amazon.ask.dispatcher.request.handler.HandlerInput具有相同的結果。
如果我改變
public class AWSLambdaLaunch implements RequestHandler<RequestEnvelope, ResponseEnvelope>
與此聲明
public class AWSLambdaLaunch implements RequestHandler<Map<String, Object>, ResponseEnvelope>
我沒有收到任何錯誤,並且工作正常,但是我發現它更“臟”,無法從嵌套的HashMaps中檢索元素和值
所以我想知道是否有一種方法可以直接將輸入解析為POJO或已經可以使用的POJO。
[編輯]這是來自Java aws sdk的RequestEnvelope類的代碼。 正如@ apandey846指出的那樣,該類中沒有默認的構造函數,所以也許就是問題所在。 有什么方法可以使用它嗎?
[edit]我已經檢查了Lambda配置選項卡中是否正確配置了處理程序的完全限定類名,如此處alexa-java-sdk-issue-102所述 。 我認為問題104與另一個問題有關,但由於模板而被引用。
都是我的錯 我一直在混淆文檔,所以嘗試了錯誤的方法。 我只遵循了this ,現在可以初始化Amazon POJO了。
總結起來,我使用的是lambda handlerequest而不是Skill handle。 com.amazon.ask.dispatcher.request.handler.HandlerInput
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.