我正在研究将YAML用于某种复杂的元数据语言。如果YAML解析器支持使用YAML tags,那么最有用的一件事就是。这将允许使用此元数据语言编写文档的人员指示何时/是否使用定义良好的模式定义某个对象。例如:
set_one: !dset
bass: tama rockstar 22x16
snare: ludwig supralight 6.5x15
tom1: tama rockstar 12x11
tom2: tama rockstar 16x16
在上面的YAML中使用“!dset”标签是作者的一个指示,即“set_one”定义的对象应该定义一个drumset,并且应该根据对应于“dset”的模式进行解析。 ”。如果对象违反了该模式的约束之一(例如,它没有定义踩镲),则用户希望在解析时看到错误,而不会导致一些更不透明的运行时错误。< / p>
我正在解析上面的示例:
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
FileInputStream fis = null;
try
{
fis = new FileInputStream(file);
JsonNode nodeTree = mapper.readTree(fis);
examineObject(nodeTree, 0);
}
...
当我在调试器中查看JsonNode的“set_one”时,我看不到任何“!dset”标记的痕迹。我可以想到杰克逊可以做很多很酷的事情(例如,使用注释将Java类与给定标记相关联,并自动将元素反序列化为该类的实例)但是,至少,我需要一些方法来发现它该节点标有“dset”。有谁知道我是否可以这样做?
答案 0 :(得分:3)