Je souhaite générer dynamiquement la configuration Hocon.
Carte d'entrée et
fichier de sortie avec le contenu ci-dessous
val finalConfig : String =
myConfig.root().render( ConfigRenderOptions.defaults())
println(finalConfig)
impossible de comprendre comment en extraire la configuration
J'ai essayé l'option ci-dessous mais elle s'imprime au format JSON
block{
key1 : value
key2 : value
}
Trying to read map
var myMap = new util.HashMap[String,AnyRef]()
val myConfig = ConfigFactory.parseMap(myMap)
myConfig.toString print below
Config(SimpleConfigObject({"key":"value"}))
Toute autre approche pour générer la configuration de sorte que la structure imbriquée peut être pris en charge?
Edit: Solution trouvée La configuration imbriquée peut être créée à l'aide de ConfigFactory. WithValue https://marcinkubala.wordpress.com/2013/10/09 / typesafe-config-hocon /
3 Réponses :
Vous pouvez utiliser kxbmap / configs
Cela prend en charge play-json prêt à l'emploi. Je l'utilise pour mapper des configurations entières directement à des classes de cas .
Donc, votre exemple ressemblerait à:
import com.typesafe.config.ConfigFactory
import configs.Configs
val config = ConfigFactory.parseString("""
block{
key1 : value
key2 : value
}
""")
config.get[Map[String, String]("block")
Salut @ pme mon entrée une carte et je veux imprimer le fichier de configuration. Je veux générer un fichier de configuration
désolé - je viens d'utiliser cette bibliothèque hier - j'étais donc un peu trop enthousiaste pour l'utiliser;)
Je ne suis pas sûr de bien comprendre votre problème ...
Mais il me semble que vous n'avez qu'à formater votre Map en tant que HOCON -like String .
Ce que vous pouvez écrire ultérieurement dans un fichier.
J'espère que cet extrait de code est ce que vous recherchez:
import collection.JavaConverters._
def toHocon(map: java.util.Map[String, AnyRef]): String =
map
.asScala
.map { case (key, value) => s"$key : $value" }
.mkString("block{\n\t", "\n\t", "\n}")
(j'en ai utilisé un tab pour l'indentation, vous pouvez le remplacer par plus de tabulations , ou par un nombre fixe d'espaces blancs) .
J'aime cette solution mais elle peut ne pas prendre en charge la création imbriquée de Hocon. Toutes les entrées si je veux créer json imbriqué dans scala comme p1 {clé: valeur, c1 {clé1: valeur1}}
@ user2895589 Merci d'avoir accepté ma réponse, mais je n'ai vraiment pas répondu à votre question. Vous devez ajouter votre propre réponse et accepter celle-ci à la place.
Vous pouvez essayer ci-dessous:
myConfig.root().render(com.typesafe.config.ConfigRenderOptions.concise())