<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="https://sandfox.me/assets/xml/atom.xsl" type="text/xsl media="all"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom">
  <title>Sand Fox (Posts about config)</title>
  <id>https://sandfox.me/tags/config.xml</id>
  <updated>2026-01-05T10:06:09Z</updated>
  <author>
    <name>Anton Smirnov</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://sandfox.me/tags/config.xml"/>
  <link rel="alternate" type="text/html" href="https://sandfox.me/tags/config.html"/>
  <generator uri="https://getnikola.com/">Nikola</generator>
  <entry>
    <title>JSON5 Tools</title>
    <id>https://sandfox.me/php/json5-tools.html</id>
    <updated>2025-07-11T05:46:00+03:00</updated>
    <published>2025-07-11T05:46:00+03:00</published>
    <author>
      <name>Anton Smirnov</name>
    </author>
    <link rel="alternate" type="text/html" href="https://sandfox.me/php/json5-tools.html"/>
    <summary type="html">&lt;p&gt;Presenting a couple of JSON5 tools I built.&lt;/p&gt;
&lt;p&gt;The first one was done a year ago, a docker CLI image to convert JSON5 to JSON:
&lt;a class="reference external" href="https://hub.docker.com/r/arokettu/json5-to-json"&gt;arokettu/json5-to-json&lt;/a&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_c6feccbd8aca4ef0b073eec56ac3445c-1" name="rest_code_c6feccbd8aca4ef0b073eec56ac3445c-1" href="https://sandfox.me/php/json5-tools.html#rest_code_c6feccbd8aca4ef0b073eec56ac3445c-1"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{ hello: 'world' }"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker&lt;span class="w"&gt; &lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;--rm&lt;span class="w"&gt; &lt;/span&gt;arokettu/json5-to-json
&lt;a id="rest_code_c6feccbd8aca4ef0b073eec56ac3445c-2" name="rest_code_c6feccbd8aca4ef0b073eec56ac3445c-2" href="https://sandfox.me/php/json5-tools.html#rest_code_c6feccbd8aca4ef0b073eec56ac3445c-2"&gt;&lt;/a&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"hello"&lt;/span&gt;:&lt;span class="s2"&gt;"world"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A simple tool to convert your configs on the build phase without installing anything into your images.&lt;/p&gt;
&lt;p&gt;The second one is a builder/serializer that is aimed at creating pretty configs in PHP:
&lt;a class="reference external" href="https://packagist.org/packages/arokettu/json5-builder"&gt;arokettu/json5-builder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While it can just serialize some data into JSON5,
the goal is to create nice configs with comments and custom formatting.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code php"&gt;&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-1" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-1" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-1"&gt;&lt;/a&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-2" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-2" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-2"&gt;&lt;/a&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-3" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-3" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-3"&gt;&lt;/a&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Arokettu\Json5\Json5Encoder&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-4" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-4" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-4"&gt;&lt;/a&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Arokettu\Json5\Values\CommentDecorator&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-5" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-5" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-5"&gt;&lt;/a&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nx"&gt;Arokettu\Json5\Values\HexInteger&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-6" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-6" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-7" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-7" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-7"&gt;&lt;/a&gt;&lt;span class="k"&gt;require&lt;/span&gt; &lt;span class="no"&gt;__DIR__&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/../vendor/autoload.php'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-8" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-8" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-8"&gt;&lt;/a&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-9" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-9" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-9"&gt;&lt;/a&gt;&lt;span class="nv"&gt;$config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CommentDecorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-10" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-10" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-10"&gt;&lt;/a&gt;    &lt;span class="p"&gt;[&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-11" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-11" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-11"&gt;&lt;/a&gt;        &lt;span class="s1"&gt;'bareKeys'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;- Look, no quotes!'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-12" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-12" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-12"&gt;&lt;/a&gt;        &lt;span class="s1"&gt;'value'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;CommentDecorator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-13" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-13" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-13"&gt;&lt;/a&gt;            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;HexInteger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xFFF&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-14" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-14" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-14"&gt;&lt;/a&gt;            &lt;span class="nx"&gt;commentAfter&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'This is a very important value'&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-15" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-15" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-15"&gt;&lt;/a&gt;         &lt;span class="p"&gt;),&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-16" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-16" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-16"&gt;&lt;/a&gt;        &lt;span class="s1"&gt;'notAvailableInJSON'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;NAN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;INF&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-17" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-17" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-17"&gt;&lt;/a&gt;        &lt;span class="s1"&gt;'end'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'auto trailing comma -&amp;gt;'&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-18" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-18" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-18"&gt;&lt;/a&gt;    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-19" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-19" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-19"&gt;&lt;/a&gt;    &lt;span class="nx"&gt;commentBefore&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'This is my cool JSON5 config!'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-20" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-20" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-20"&gt;&lt;/a&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-21" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-21" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-21"&gt;&lt;/a&gt;
&lt;a id="rest_code_f7b14189ca084df3ab5c3454a06d57fc-22" name="rest_code_f7b14189ca084df3ab5c3454a06d57fc-22" href="https://sandfox.me/php/json5-tools.html#rest_code_f7b14189ca084df3ab5c3454a06d57fc-22"&gt;&lt;/a&gt;&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nx"&gt;Json5Encoder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="na"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="code"&gt;&lt;pre class="code js"&gt;&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-1" name="rest_code_80782c7f27d6453da4531df6477dd67b-1" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-1"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// This is my cool JSON5 config!&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-2" name="rest_code_80782c7f27d6453da4531df6477dd67b-2" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-2"&gt;&lt;/a&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-3" name="rest_code_80782c7f27d6453da4531df6477dd67b-3" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-3"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;bareKeys&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;- Look, no quotes!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-4" name="rest_code_80782c7f27d6453da4531df6477dd67b-4" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-4"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;0xFFF&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// This is a very important value&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-5" name="rest_code_80782c7f27d6453da4531df6477dd67b-5" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;notAvailableInJSON&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-6" name="rest_code_80782c7f27d6453da4531df6477dd67b-6" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-6"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kc"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-7" name="rest_code_80782c7f27d6453da4531df6477dd67b-7" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-7"&gt;&lt;/a&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="kc"&gt;Infinity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-8" name="rest_code_80782c7f27d6453da4531df6477dd67b-8" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-8"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-9" name="rest_code_80782c7f27d6453da4531df6477dd67b-9" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-9"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;end&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto trailing comma -&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;a id="rest_code_80782c7f27d6453da4531df6477dd67b-10" name="rest_code_80782c7f27d6453da4531df6477dd67b-10" href="https://sandfox.me/php/json5-tools.html#rest_code_80782c7f27d6453da4531df6477dd67b-10"&gt;&lt;/a&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</summary>
    <category term="config" label="config"/>
    <category term="docker" label="docker"/>
    <category term="json5" label="json5"/>
  </entry>
</feed>
