Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert HOCON (.conf) to JSON with scala/play?

I want to convert a .conf-file directly to json so I can pass it to frontend. Is there a way to do that in scala/play? It seems to be incredibly cumbersome with the path I'm taking now:

val conf: Configuration = play.api.Configuration.apply(ConfigFactory.parseFile(new File("app/assets/strings.conf")))
conf.entrySet.seq.map(t => t._1 -> t._2.unwrapped())
// which gives me a Seq[(String, AnyRef)] which cannot be converted with Json, so the path from here is even uglier

I'm tempted to go back to JSON, but the HOCON-syntax is perfect for our use-case. HOCON is basicly JSON with less braces and quotes - so conversion should be very straightforward. Still I can't find a simple way to do anything like it with play/scala.

like image 590
kornfridge Avatar asked Nov 30 '14 11:11

kornfridge


2 Answers

This will do:

val config = ConfigFactory.load(); // read Config here 

val configJSON : String = 
  config.root().render( ConfigRenderOptions.concise() )

This will give you a JSON string.

There are additional options how you want the output formatted. More in the documentation: https://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigValue.html#render()

like image 67
Andreas Neumann Avatar answered Nov 05 '22 03:11

Andreas Neumann


In case anyone comes here wondering how to do the same thing in Java, at least for play 2.2.x you can do the following:

config.underlying().root().render(ConfigRenderOptions.concise());
like image 1
João Antunes Avatar answered Nov 05 '22 04:11

João Antunes