簡體   English   中英

使用多個主鍵解析json配置

[英]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()));

一次又一次地為護照號碼等其他主鍵?

假設

  1. 每個人的駕照都是獨一無二的
  2. 按駕照查詢不需要 SSN 作為輸出
  3. Person 類中可能還有其他唯一標識鍵

不能用任何一種內容不可知的反序列化做到這一點,它只在結構上運行。 你可以在后處理中做一些微不足道的事情,比如

var byDl = bySsn.values().stream().collect(toMap(Person::drivingLicense, identity()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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