今天晚上一直在想怎么记录行号的问题。
为啥要记录行号呢?因为我用snakeyaml或者jackson组件把yaml文件进行了解析,解析完成后,还会对立面的value按照我自己定义的语法格式进行解析,这个时候,如果value有语法错误,就需要报错,提醒编写yaml的人修改yaml。这个报错信息必须要有指导意义,所以必须需要行号。
但是snakeyaml、jackson解析出来之后,把yaml文件内容转换成了map或者对象,把行号的信息丢弃掉了。我很难拿到这个行号。
所以晚上想了一晚上,也翻阅了插件的一些api,没有想到太好的办法。于是到了9点多的时候,我就打算下班了,打算明天继续探索吧。
但当我走到门口,突然脑子里灵光一现,一种思路浮现在我的脑海里。我激动的从头到尾思考了我这个方案的可行性,发现几乎没有太大的漏洞。但我下班了,只能明天过来实践。
我的思路大概是这样的,先遍历yaml文件,读取每一行,在每一行的key里面,加上行号信息,然后使用yaml组件解析成map。这时,map中的key就有了行号信息,取出来进行关联,给后面的步骤使用就好了。
Q.E.D.