SnakeYAML: Как мне загрузить yaml с помощью Set, используя TypeDescription?

Я использую Set в моем 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.

В результате я конвертировал свои наборы в списки.

1 ответ

Решение

В конце концов понял это. Наборы YAML - это Карты с нулевыми значениями. В итоге я определил свою модель данных, чтобы в ней был член Set, а затем использовал API putMapPropertyType для регистрации привязки.

Class Config {
   Set<String> players;
}


// in the YAML parsing code block :
typeDef.putMapPropertyType("players", String.class, Object.class /* Value type doesnt matter */ );

Надеюсь это поможет.

Другие вопросы по тегам