第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java POJO 屬性映射

Java POJO 屬性映射

守著星空守著你 2021-06-09 13:01:44
我有一個用例,我在這樣的請求中收到一些屬性,"filters": [  {    "field": "fName",    "value": "Tom"  },  {    "field": "LName",    "value": "Hanks"  }]我沒有為此定義的模型。我只是在請求中收到這些屬性,并使用這些屬性觸發(fā)對彈性搜索的查詢。我在彈性搜索中的記錄具有相同的屬性名稱?,F(xiàn)在,我必須支持一個屬性名稱完全不同的遺留應用程序。例如:fName變成firstName并且lName變成lastName。問題:需要在請求中接受舊的屬性名稱,將它們轉(zhuǎn)換為新的,以便匹配我的彈性搜索記錄。在從應用程序發(fā)送響應之前,獲取具有新屬性名稱的數(shù)據(jù)并轉(zhuǎn)換回舊屬性名稱。注意:我沒有為這些記錄定義 POJO。如何有效地實現(xiàn)這一目標?我正在考慮使用 Orika 映射器,但不確定在不首先定義類的情況下如何工作。
查看完整描述

3 回答

?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

是什么阻止您編寫從請求 JSON 到規(guī)范化 JSON 的轉(zhuǎn)換器?


我能想到的正常流程是:


Request JSON -> POJO -> POJO with normalized value -> Normalized JSON

所以你的 POJO 看起來像:


public class Filter {


     List<FieldFilter> filters;


     public static class FieldFilter {

         private String field;

         private String value;

     }

}

現(xiàn)在您將擁有一個轉(zhuǎn)換圖,如:


Map<String, String> fieldNameMapping = new HashMap<>();

fieldNameMapping.put("fName", "firstName");

fieldNameMapping.put("firstName", "firstName");


// The process of populating this map can be done either by a static initializer, or config/properties reader

然后你轉(zhuǎn)換你的 POJO:


Filter filterRequest;

List<FieldFilters> normlizedFilters = 

    filterReq.getFilters().stream()

             .map(f -> new FieldFilter(fieldNameMapping.get(f.getField()), f.getValue())

             .collect(toList());

然后將 Filter 類轉(zhuǎn)換為規(guī)范化的 JSON。


查看完整回答
反對 回復 2021-06-23
?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

我們有一個類似的場景,我們使用的是apache JOLT。如果您想嘗試一些示例,可以參考jolt-demo-online-utility


查看完整回答
反對 回復 2021-06-23
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

最后,這里不需要中間對象類型。你還說,你還沒有這種類型,發(fā)明它,只是為了改造它,真的沒有意義。


查看完整回答
反對 回復 2021-06-23
  • 3 回答
  • 0 關(guān)注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號