函數(shù)式編程
2023-05-24 16:04:47
我的團隊有兩個 AWS Lambda,分別用 Golang(1) 和 Java8(2) 編寫。Lambda#1 正在向 Lambda#2 發(fā)送 JSON 負載;由于 Lambda 中 Golang 的性質(zhì),它必須作為字節(jié)數(shù)組發(fā)送。這是問題開始的地方。我首先像這樣聲明我的 Java 處理程序:public String handleRequest(String input, Context _context) {}然而,甚至在 Lambda#2 被調(diào)用之前,Cloudwatch 日志指示 JSON 映射錯誤,表示 START_OBJECT 無法映射到字符串。很明顯,在將其傳遞給 Lambda 之前,它試圖自己進行一些映射。接下來我嘗試的是自定義 POJO:public String handleRequest(RequestObj input, Context _context){}然而這也失敗了,我相信這是由于 JSON 字符串中的一些轉(zhuǎn)義字符串。所以我想對我來說,所有這一切歸結(jié)為兩個問題:根據(jù) CW 日志,Lambda 使用 FasterXML 的 Jackson 來映射 Lambda 輸入。有什么方法可以@JsonProperty在自定義 RequestObject 類中使用注釋或類似的東西嗎?文件說:您不應依賴序列化框架的任何其他功能,例如注釋。(但它仍然是杰克遜?。。┯袥]有辦法告訴 Lambda 停止嘗試映射輸入并只使用原始字節(jié)數(shù)組手動解析?這將解決很多令人頭疼的問題,以便能夠使用注釋進行我們自己的自定義解析。在此先感謝,如果需要可以提供更多詳細信息。
1 回答

www說
TA貢獻1775條經(jīng)驗 獲得超8個贊
我一直在為同樣的事情而苦苦掙扎。我使用它的解決方案不指望 Lambda 為我進行序列化。我做類似的事情:
public void handleRequest(InputStream inputStream,
OutputStream outputStream,
Context context) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(inputStream);
然后做這樣的事情:
String name = jsonNode.get("name").asText();
如所須。當然,如果你愿意,你可以得到你的 POJO——這取決于對象的大小。
然后我jackson-core在我的構(gòu)建文件中使用來引入所需的依賴項。當然,如果您需要返回任何內(nèi)容,您可以使用ObjectMapper來寫入OutputStream.
添加回答
舉報
0/150
提交
取消