本文介紹了Snakeyaml 似乎不必要地將簡單值包裝在列表中的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試使用 Groovy 和 Snakeyaml 解析以下 YAML 文件(顯然我已經清理了數據,但足以證明問題):
I am attempting to parse the following YAML file using Groovy and Snakeyaml (clearly I have sanitised the data but it is sufficient to demonstrate the issue):
---
info:
summary: Snakeyaml Issue
examples:
- 1st example:
name: Example 1
sublist:
- 0.1:
foo: bar
我希望得到以下陳述:
println resource.info.summary
println resource.examples."1st example".name
println resource.examples."1st example".sublist."0.1"
屈服:
Snakeyaml Issue
Example 1
[foo:bar]
和:
println resource.examples."1st example".sublist."0.1".foo
屈服:
bar
但是,實際輸出來自:
println resource.info.summary
println resource.examples."1st example".name
println resource.examples."1st example".sublist."0.1"
println resource.examples."1st example".sublist."0.1".foo
是:
Snakeyaml Issue
[Example 1]
[[[foo:bar]]]
[[bar]]
我只能通過包含列表索引來獲得所需的輸出:
I can only get the desired output by including the list indicies:
println resource.info.summary
println resource.examples[0]."1st example".name
println resource.examples[0]."1st example".sublist[0]."0.1"
println resource.examples[0]."1st example".sublist[0]."0.1".foo
這似乎是不必要的.也許我誤解了數據的結構?
which seems unnecessary. Perhaps I am misunderstanding the structure of the data?
為了完整起見,我用來說明問題的常規代碼如下所示(我從網上抓取了 CustomerResolver 代碼,以便將浮點數保持為字符串):
For completeness, the groovy code that I am using to illustrate the issue is shown below (I grabbed the CustomerResolver code off the web so that it would keep floats as strings):
import org.yaml.snakeyaml.DumperOptions
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.constructor.Constructor
import org.yaml.snakeyaml.nodes.Tag
import org.yaml.snakeyaml.representer.Representer
import org.yaml.snakeyaml.resolver.Resolver
def fileName = "example.yaml"
def Yaml yaml = new Yaml(new Constructor(), new Representer(), new DumperOptions(),
new CustomResolver())
def resource = yaml.load(new File(fileName).newInputStream())
println resource.info.summary
println resource.examples."1st example".name
println resource.examples."1st example".sublist."0.1"
println resource.examples."1st example".sublist."0.1".foo
class CustomResolver extends Resolver {
/*
* Do not resolve float and timestamp
*/
protected void addImplicitResolvers() {
addImplicitResolver(Tag.BOOL, BOOL, "yYnNtTfFoO");
addImplicitResolver(Tag.INT, INT, "-+0123456789");
addImplicitResolver(Tag.MERGE, MERGE, "<");
addImplicitResolver(Tag.NULL, NULL, "~nN
主站蜘蛛池模板:
久在线
|
国产精品成人一区二区三区夜夜夜
|
成人亚洲网|
亚洲精品黄色
|
欧美一级观看
|
免费日本视频
|
亚洲天堂中文字幕
|
欧美一二区
|
91精品国产91久久久久久最新
|
欧洲成人午夜免费大片
|
国产黄色大片在线免费观看
|
久久剧场|
青娱乐国产
|
欧美 日韩 国产 一区
|
www.av7788.com|
一区二区三区四区视频
|
99国产精品久久久久老师
|
亚洲精品免费视频
|
亚洲a视
|
欧美一区二区在线观看
|
国产在线视频一区二区董小宛性色
|
韩日一区二区
|
亚洲国产精品一区二区久久
|
国产一区二区在线看
|
日本涩涩视频
|
丁香综合
|
av片毛片
|
av福利网
|
一区二区精品
|
午夜a级理论片915影院
|
av天天看
|
jlzzjlzz欧美大全
|
欧美激情一区二区三级高清视频
|
国产成人精品一区二区三区网站观看
|
丁香婷婷综合激情五月色
|
可以在线观看av的网站
|
国产精品一区二区三区免费观看
|
精品久久久久久中文字幕
|
亚洲激情网站
|
亚洲天堂色
|
久久久久久高潮国产精品视
|