SnakeYAML:如何使用 TypeDescription 加载带有 Set 的 yaml?
SnakeYAML: How do I load a yaml with Set using TypeDescription?
我在我的 YAML 中使用了一个类似这样的集合:
# Explicitly typed set.
baseball players: !!set
? Mark McGwire
? Sammy Sosa
? Ken Griffey
# Flow style
baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees }
如何在注册构造函数时将类型显式设置为 Set?
TypeDescription 只允许我根据文档注册列表或地图:
http://javadox.com/org.yaml/snakeyaml/1.13/org/yaml/snakeyaml/TypeDescription.html
void putListPropertyType(String property, Class<? extends Object> type)
Specify that the property is a type-safe List.
void putMapPropertyType(String property, Class<? extends Object> key, Class<? extends Object> value)
Specify that the property is a type-safe Map.
因此,我最终将我的集合转换为列表。
最终解决了这个问题。 YAML 集是具有空值的映射。所以我最终将我的数据模型定义为具有一个 Set 成员,然后我使用 putMapPropertyType API 来注册绑定。
Class Config {
Set<String> players;
}
// in the YAML parsing code block :
typeDef.putMapPropertyType("players", String.class, Object.class /* Value type doesnt matter */ );
希望对您有所帮助。
我在我的 YAML 中使用了一个类似这样的集合:
# Explicitly typed set.
baseball players: !!set
? Mark McGwire
? Sammy Sosa
? Ken Griffey
# Flow style
baseball teams: !!set { Boston Red Sox, Detroit Tigers, New York Yankees }
如何在注册构造函数时将类型显式设置为 Set?
TypeDescription 只允许我根据文档注册列表或地图: http://javadox.com/org.yaml/snakeyaml/1.13/org/yaml/snakeyaml/TypeDescription.html
void putListPropertyType(String property, Class<? extends Object> type)
Specify that the property is a type-safe List.
void putMapPropertyType(String property, Class<? extends Object> key, Class<? extends Object> value)
Specify that the property is a type-safe Map.
因此,我最终将我的集合转换为列表。
最终解决了这个问题。 YAML 集是具有空值的映射。所以我最终将我的数据模型定义为具有一个 Set 成员,然后我使用 putMapPropertyType API 来注册绑定。
Class Config {
Set<String> players;
}
// in the YAML parsing code block :
typeDef.putMapPropertyType("players", String.class, Object.class /* Value type doesnt matter */ );
希望对您有所帮助。