繁体   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