如果我有一个像这样的yaml文件:
obj:
- name: 'msg'
patterns:
'("ssn":")([^"]*)(")' : '$1xxxxxxxxx$3'
'("cvv":")([^"]*)(")' : '$1xxxx$3'
'("ssn":")([^"]*)(")' : '$1xxxxxxxxx$3'
如果我使用Groovy YamlSlurper类来加载它,“patterns”对象将有两个属性,名称如下:
- (“ssn”:“)([^"]*)(“)
- (“cvv”:“)([^"]*)(“)
输入中的第三个属性的名称与第一个属性的名称相同,因此第三个属性将覆盖第一个属性(反之亦然)。
有没有什么方法可以使用YamlSlurper和YamlBuilder的某种组合来检测输入是否具有重复的属性名称?
我可以看到,更改此文件的预期语法,使其预期格式如下:
obj:
- name: 'msg'
patterns:
- '("ssn":")([^"]*)(")' : '$1xxxxxxxxx$3'
- '("cvv":")([^"]*)(")' : '$1xxxx$3'
- '("ssn":")([^"]*)(")' : '$1xxxxxxxxx$3'
如果我不能在使用原始格式的输入中检测到重复的属性名称,我会考虑更改规范以要求修改后的格式。
1条答案
按热度按时间yftpprvb1#
在
groovy.yaml.YamlSlurper
后面有一个jackson
库。解析()-〉转换器()-〉
jackson
因此,您可以使用它来检测第一个重复项:
此代码抛出异常: