java snakeyaml解决Map&List&对象嵌套解析问题

引入相关jar包依赖

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.25</version>
</dependency>

 

待解析yaml文件

# network-config.yml
orgs:
  Org1MSP:
    - nodeName: peer0.org1.myqkl.com
      grpcUrl: grpc://127.0.0.1:7051
      evenHubUrl: grpc://127.0.0.1:7053
    - nodeName: peer1.org1.myqkl.com
      grpcUrl: grpc://127.0.0.1:8051
      evenHubUrl: grpc://127.0.0.1:8053
  Org2MSP:
    - nodeName: peer0.org2.myqkl.com
      grpcUrl: grpc://127.0.0.1:9051
      evenHubUrl: grpc://127.0.0.1:9053
    - nodeName: peer1.org2.myqkl.com
      grpcUrl: grpc://127.0.0.1:10051
      evenHubUrl: grpc://127.0.0.1:10053

visitors:
  ayz3jmhtRBd2sidLl0Y3Eq4tyGmhpDUf:
    name: org2.myqkl.com
    mspId: Org2MSP
    keystore: /home/org2/keystore/admin2keystore_sk
    signcerts: /home/org2/signcerts/Admin@org2.myqkl.com-cert.pem
  byz3jmhtRBd2sidLl0Y3Eq4tyGmhpDUf:
    name: org1.myqkl.com
    mspId: Org1MSP
    keystore: /home/msp/keystore/adminkeystore_sk
    signcerts: /home/msp/signcerts/Admin@org1.myqkl.com-cert.pem

 

yaml对应实体类

public class NetworkConfig {
    private Map<String, MspInfo> visitors;

    private Map<String, List<PeerNodeDTO>> orgs;

    public Map<String, MspInfo> getVisitors() {
        return visitors;
    }

    public void setVisitors(Map<String, MspInfo> visitors) {
        this.visitors = visitors;
    }

    public Map<String, List<PeerNodeDTO>> getOrgs() {
        return orgs;
    }

    public void setOrgs(Map<String, List<LinkedHashMap<String, String>>> orgs) {
        final Map<String, List<PeerNodeDTO>> tmpOrgs = new HashMap<>();
        orgs.forEach((k, v) -> {
            List<PeerNodeDTO> peerNodeDTO = JSONObject.parseObject(
                    JSONObject.toJSONString(v), new TypeReference<List<PeerNodeDTO>>(){});
            tmpOrgs.put(k, peerNodeDTO);
        });
        this.orgs = tmpOrgs;
    }
}

 

@Data
@NoArgsConstructor
@AllArgsConstructor
public class PeerNodeDTO implements Serializable {
    private static final long serialVersionUID = -2922948409432264522L;
    private String nodeName;
    private String grpcUrl;
    private String evenHubUrl;
}

 

解析相关代码

public class App {
    public static void main(String[] args) throws Exception {
        File visitor = ResourceUtils.getFile("classpath:network-config.yml");
        Yaml yaml = new Yaml();
        NetworkConfig networkConfig = yaml.loadAs(new FileInputStream(visitor), NetworkConfig.class);
        // ...
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jaemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值