hocon is a superset of JSON file type, So JSON syntax almost works in the hocon configuration file.

So Every syntax of JSON objects works with hocon configuration.

Hocon Configuration Syntax

Configuration can be defined with key and value.

Here is a simple configuration defined in the hocon .conf file

Here is a syntax

key:value
key=value

the key is a string value value can be string, boolean, array or map, or number key and value are separated by a colon(:) or equal (=) symbol

The same syntax can be declared and rewritten as follows.

{
  key:value

  key=value
}

Root element braces({}) are omitted.

The below configuration is also valid.

key:value

The same can be rewritten in JSON.

{
  "key":"value"
}

Let’s see some examples of different keys and values.

  • String value example in hocon
{
keystring:"keyvalue"
keystring1:"keyvalue1"
}
  • Number value example in hocon
{
keyinteger:12
keyfloat:11.0
}
  • boolean value example
{
key boolean:true
keyboolean1:false
keyboolean2:yes
keyboolean3:no
}
  • Array values example The array contains a group of values enclosed in square brackets []. The values in the array can be strings, booleans, integers
      emptyArray: []
      intArray: [11, 12, 13]
      stringArray: ["one","two","three"]
      booleanArray: [true,false,yes,no]

The object can also be declared as values in hocon configuration

dev: {
hostname: dev.site.com,
username: username,
password: password,
}

Comments

Comments are useful text to describe each line of text. This will be ignored by the processor or compiler during reading.

It supports inline comments and these always stats with ‘//’ and ‘#’

// this is an inline comment
\# this is another inline comment

Includes

This is one of the important features which is not available in JSON. This is used to include multiple files

let’s declare database.conf which contains common properties database.conf

database.port=5712
database.ssenabled=true

dev.conf

include "database.conf"

hostname: dev.site.com,
username: username,
password: password,

Substitution variable

Hocon supports Substitution variables using ${} syntax

It replaces the variable with a variable as seen below

devprofile {
      hostname: dev

    }
 devpath: ${devprofile.hostname}:8080
ItemsStatusExample
Comments✅#
Omit root braces✅
Key-value separator✅
Commas✅
Whitespace✅
Duplicate keys and object merging✅
Unquoted strings✅
Multi-line strings✅
String value concatenation✅
Array concatenation✅
Object concatenation✅
Arrays without commas✅
Path expressions✅
Paths as keys✅
Substitutions✅
Self-referential substitutions✅
The += separator✅
Includes✅
Include semantics: merging✅
Include semantics: substitution✅
Include semantics: missing files❌
Include semantics: file formats and extensions❌
Include semantics: locating resources❌
Include semantics: preventing cycles❌
Conversion of numerically-index objects to arrays✅
API RecommendationsStatus
Conversion of numerically-index objects to arrays❌
Automatic type conversions❌
Units format❌
Duration format❌
Size in bytes format❌
Config object merging and file merging❌
Java properties mapping❌