Accessing array elements in a TypeSafe configuration

maasg picture maasg · Sep 23, 2014 · Viewed 8.3k times · Source

Given a nested JSON as configuration, like:

{
    app: {
        id: "app1"
        instances: 2,
        servers: [
            { host: "farm1.myco.com", port: 9876 }
            { host: "farm2.myco.com", port: 9876 }
        ]
    }
}

When using typeSafe config, is it possible to address elements of an array directly in a path?

At the moment we need to do something like the following, which is kind of verbose:

val servers = config.getObjectList("app.servers")
val server = servers.get(0).toConfig
val host = server.getString("host")
val port = server.getInt("port")

Something like this would be ideal:

val host = config.getString("app.servers.0.host") ?

Does the TypeSafe API supports something like this?

Answer

George picture George · Oct 9, 2015

This seems not possible so far.
See https://github.com/typesafehub/config/issues/30