2012-01-24 8 views
10

¿Hay una biblioteca Java similar a libconfig para C++, donde el archivo de configuración está almacenado en un formato JSON que puede ser editado por humanos y luego leer desde ¿el programa?Configuración de programa editable humana JSON o similar a YAML en Java

No quiero utilizar Spring o cualquiera de los frameworks más grandes. Lo que busco es una biblioteca pequeña, rápida y autónoma. Miré java.util.Properties, pero parece que no admite datos de configuración jerárquica/anidada.

Respuesta

18

Creo que https://github.com/typesafehub/config es exactamente lo que estás buscando. El formato se llama HOCON para Notación de objetos de configuración optimizada para el ser humano y es un superconjunto de JSON.

Examples of HOCON:

Hocón que también es válido JSON:

{ 
    "foo" : { 
     "bar" : 10, 
     "baz" : 12 
    } 
} 

Hocón también soporta el formato propiedades estándar, por lo que lo siguiente es válido, así:

foo.bar=10 
foo.baz=12 

Una de las características que encuentro muy útil es la herencia, esta allo ws a capas de configuraciones. Por ejemplo, una biblioteca tendría un reference.conf, y la aplicación que utiliza la biblioteca tendría un application.conf. La configuración en application.conf anulará los valores predeterminados en reference.conf.

Standard Behavior para configuraciones de carga:

El ConfigFactory.load método de conveniencia() carga el siguiente (primera cotizada son más altos de prioridad):

  • propiedades del sistema application.conf (todos los recursos en classpath con este nombre)
  • application.json (todos los recursos en classpath con este nombre )
  • application.properties (todos los recursos en classpath con este nombre )
  • referencia.conf (todos los recursos en la ruta de clase con este nombre)
0

Hay una biblioteca de Java para manejar archivos JSON si eso es lo que estás buscando:

http://www.json.org/java/index.html

Salida otras herramientas en la página principal:

http://json.org/

+0

Bueno, necesito algo si yo no no tiene que preocuparse por analizar el archivo en absoluto. Todo lo que debo hacer es inicializar con el nombre del archivo y luego leer las claves con un solo comando. –

+0

Eso es exactamente lo que necesita. Tal vez ni un solo comando, pero lo suficientemente cerca de eso. – maksimov

4

Me encontraron esta HOCON ejemplo:

my.organization { 
    project { 
     name = "DeathStar" 
     description = ${my.organization.project.name} "is a tool to take control over whole world. By world I mean couch, computer and fridge ;)" 
    } 
    team { 
     members = [ 
      "Aneta" 
      "Kamil" 
      "Lukasz" 
      "Marcin" 
     ] 
    } 
} 
my.organization.team.avgAge = 26 

para leer los valores:

val config = ConfigFactory.load() 
config.getString("my.organization.project.name") // => DeathStar 
config.getString("my.organization.project.description") // => DeathStar is a tool to take control over whole world. By world I mean couch, computer and fridge ;) 
config.getInt("my.organization.team.avgAge") // => 26 
config.getStringList("my.organization.team.members") // => [Aneta, Kamil, Lukasz, Marcin] 

referencia: marcinkubala.wordpress.co m

Cuestiones relacionadas