我的任務(wù)是創(chuàng)建一個(gè)管道來(lái)轉(zhuǎn)換不同類型的輸入,例如:RESTful[JSON, XML, ...]套接字 [JSON, XML, ...]關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)...然后使用他們給我的輸出進(jìn)行轉(zhuǎn)換和操作,最后將它們發(fā)送回相同或另一個(gè)源/格式/結(jié)構(gòu)。有沒(méi)有一種模式可以幫助解決這種情況并使其盡可能抽象,因此無(wú)論來(lái)源和結(jié)構(gòu)如何,我都可以切換對(duì)象?響應(yīng)對(duì)象始終是一種集合形式:具有多個(gè)對(duì)象的 JSONArray、ResultSet、...我的想法是創(chuàng)建一個(gè)“適配器類”,它能夠接受一個(gè) JSON 字符串、一個(gè) XML 字符串甚至一個(gè) RDBMS 數(shù)據(jù)集,這樣我就可以使用這個(gè)適配器對(duì)象,然后將它轉(zhuǎn)換回另一個(gè)結(jié)構(gòu):JSON 字符串、數(shù)據(jù)集、 ...class AdapterClass{ //how could it look like?}class AdapterClassFactory{ //input public AdapterClass generateByJSONString(String input) public AdapterClass generateByXMLString(String input) public AdapterClass generateByResultSet(ResultSet input) public AdapterClass generateByCSV(String input) //output public String generateJSONString(AdapterClass input) public String generateXMLString(AdapterClass input) public ResultSet generateResultSet(AdapterClass input) public String generateCSV(AdapterClass input)}我想我只是腦子有點(diǎn)遲鈍,但我腦子里想不出答案。感謝您的幫助。
1 回答

蠱毒傳說(shuō)
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
您描述的內(nèi)容可以通過(guò)像Apache Camel這樣的集成框架來(lái)完成。它可以使用來(lái)自不同來(lái)源REST、JDBC和許多其他來(lái)源的數(shù)據(jù)。此外,它可以將數(shù)據(jù)轉(zhuǎn)換為任何格式或從任何格式轉(zhuǎn)換數(shù)據(jù),因此它是高度可定制的。
例如,您可以構(gòu)建一個(gè)管道,如
從 REST 端點(diǎn)讀取數(shù)據(jù) -> 將 JSON 解組為 POJO 類 -> 進(jìn)行一些轉(zhuǎn)換 -> 將 POJO 編組為 XML -> 將數(shù)據(jù)發(fā)送到另一個(gè)服務(wù)
添加回答
舉報(bào)
0/150
提交
取消