[英]Parsing json configuration with multiple primary keys
{
"ssn1": {
"name": "person1",
"address": "address1"
"drivingLicense": "dl1"
},
"ssn2": {
"name": "person2",
"address": "address2"
"drivingLicense": "dl2"
}
}
如上所述,我有一個 json 配置數據。
class Citizen {
Map<String, Person> personMap;
}
class Person {
String name;
String address;
String drivingLicense;
}
pojos 就像上面提到的那個。 我可以輕松地將 json 配置反序列化為 java Map<String, Person>
並使用 SSN 進行搜索。
問題:如何反序列化以獲取兩張地圖 - 一張輸入 SSN,另一張使用駕駛執照? 我可以使用 SSN->person 地圖來創建另一個地圖 DrivingLicense->Person。 我可以以一種優雅的方式創建駕駛執照地圖嗎?
ssnMap.entrySet().stream().collect(Collectors.toMap(
e -> e.getValue().getDrivingLicense(),
e -> e.getValue()));
一次又一次地為護照號碼等其他主鍵?
假設
你不能用任何一種內容不可知的反序列化來做到這一點,它只在結構上運行。 你可以在后處理中做一些微不足道的事情,比如
var byDl = bySsn.values().stream().collect(toMap(Person::drivingLicense, identity()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.