簡體   English   中英

將AWS Lambda handleRequest中的輸入解析為POJO

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM