<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carlos Eduardo Git</title>
    <description>The latest articles on DEV Community by Carlos Eduardo Git (@carlosdev11).</description>
    <link>https://dev.to/carlosdev11</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2877856%2Fc3a4921d-c403-4fed-a302-0f0da34b9887.png</url>
      <title>DEV Community: Carlos Eduardo Git</title>
      <link>https://dev.to/carlosdev11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carlosdev11"/>
    <language>en</language>
    <item>
      <title>JSSON (JavaScript Simplied Object Notation)</title>
      <dc:creator>Carlos Eduardo Git</dc:creator>
      <pubDate>Mon, 24 Nov 2025 23:38:53 +0000</pubDate>
      <link>https://dev.to/carlosdev11/jsson-javascript-simplied-object-notation-2lo6</link>
      <guid>https://dev.to/carlosdev11/jsson-javascript-simplied-object-notation-2lo6</guid>
      <description>&lt;h1&gt;
  
  
  Today I'm officially launching &lt;strong&gt;JSSON&lt;/strong&gt; (pronounced &lt;em&gt;“djéisson”&lt;/em&gt;, write that down)
&lt;/h1&gt;

&lt;p&gt;First things first: &lt;strong&gt;this is NOT trying to replace JSON&lt;/strong&gt;.&lt;br&gt;
The goal is simple: &lt;strong&gt;save you from the pain of writing JSON by hand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I know, I know… I can already hear someone sighing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh boy, here comes another TOON-like format…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relax. I promise this is not the kind of format that makes you regret becoming a developer.&lt;/p&gt;


&lt;h2&gt;
  
  
  🤔 Why does JSSON exist?
&lt;/h2&gt;

&lt;p&gt;Think about all those times you had to manually craft:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;giant mocks&lt;/li&gt;
&lt;li&gt;database seeds&lt;/li&gt;
&lt;li&gt;repetitive structures&lt;/li&gt;
&lt;li&gt;endless configs&lt;/li&gt;
&lt;li&gt;massive arrays&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…and then spent 30 minutes fighting &lt;strong&gt;commas&lt;/strong&gt;, &lt;strong&gt;quotes&lt;/strong&gt;, &lt;strong&gt;brackets&lt;/strong&gt;, &lt;strong&gt;indentation&lt;/strong&gt;, and a mild headache.&lt;/p&gt;

&lt;p&gt;Yeah.&lt;br&gt;
JSSON exists to end that suffering.&lt;/p&gt;


&lt;h1&gt;
  
  
  The most basic example
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user {
  name = João
  age = 20
  admin = true
  roles = [ "admin", "editor" ]
  config {
    theme = dark
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No quotes on simple values.&lt;br&gt;
No commas.&lt;br&gt;
No drama.&lt;/p&gt;


&lt;h1&gt;
  
  
  Simple template (yes, it &lt;em&gt;looks&lt;/em&gt; like CSV… calm down)
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age, job, height }
  João, 19, Student, 1.75
  Maria, 25, Teacher, 1.65
  Pedro, 30, Doctor, 1.80
  Ana, 22, Nurse, 1.68
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Yep, it resembles CSV.&lt;br&gt;
And no, this alone won’t generate huge structures.&lt;/p&gt;

&lt;p&gt;But breathe, and keep reading:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Templates + logic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where JSSON starts changing your mind.&lt;/p&gt;


&lt;h1&gt;
  
  
  Okay, now: &lt;strong&gt;logic baked into the format&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This example transforms every item automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;routes [
  template { path, method }

  map (item) = {
    path = "/api/" + item.path
    method = item.method
  }

  users, GET
  posts, POST
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routes"&lt;/span&gt;&lt;span class="p"&gt;:&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;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/users"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&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;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/posts"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&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;&lt;span class="p"&gt;]&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;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Generating huge structures with ranges
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;servers [
  template { id, port }

  map (s) = {
    id = s.id
    ip = "192.168.1." + s.id
    port = s.port
  }

  100..120,
  3000..3020
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, this generates &lt;strong&gt;21 servers&lt;/strong&gt; with matching IPs and ports.&lt;br&gt;
Yes, without writing anything manually.&lt;br&gt;
Yes, cue the victory theme.&lt;/p&gt;


&lt;h1&gt;
  
  
  Giving your data “intelligence”
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age, department, yearsOfService }

  map (u) = {
    name = u.name
    age = u.age
    department = u.department
    yearsOfService = u.yearsOfService

    canVote = u.age &amp;gt;= 18
    isExecutive = u.yearsOfService &amp;gt;= 10
    accessLevel = u.yearsOfService &amp;gt;= 10 ? "senior"
                : u.yearsOfService &amp;gt;= 5  ? "mid"
                : "junior"
    salary = u.yearsOfService &amp;gt;= 10 ? 150000
            : u.yearsOfService &amp;gt;= 5 ? 100000
            : 60000
    benefits = u.yearsOfService &amp;gt;= 5 ? ["health", "dental", "401k"] : ["health"]
  }

  "João Silva", 35, Engineering, 12
  "Maria Santos", 28, Sales, 6
  "Pedro Costa", 22, Marketing, 2
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You write a few lines and follow a pattern.&lt;br&gt;
JSSON builds an entire smart object structure for you.&lt;/p&gt;


&lt;h1&gt;
  
  
  Generating dozens of users in minutes
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { id, department }

  map (u) = {
    id = u.id
    username = "user_" + u.id
    email = "user_" + u.id + "@company.com"
    dept = u.department
    role = "employee"
  }

  // Engineering
  100..104, Engineering

  // Sales
  200..204, Sales
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Done. Automatically generated users, all neatly standardized.&lt;/p&gt;


&lt;h1&gt;
  
  
  Generating entire teams (logic + ranges)
&lt;/h1&gt;

&lt;p&gt;The classic example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;employees [
  template { id, dept, level }

  map (e) = {
    id = e.id
    name = "Employee " + e.id
    email = "emp" + e.id + "@corp.com"
    department = e.dept
    level = e.level
    salary = e.level == "senior" ? 120000 
           : e.level == "mid"    ? 80000 
           : 50000
  }

  // Engineering
  1000..1004, Engineering, junior
  1005..1009, Engineering, mid
  1010..1012, Engineering, senior

  // Sales
  2000..2009, Sales, junior
  2010..2014, Sales, mid

  // HR
  3000..3002, HR, mid
  3003..3004, HR, senior
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is extremely useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;seeds&lt;/li&gt;
&lt;li&gt;unit tests&lt;/li&gt;
&lt;li&gt;prototyping&lt;/li&gt;
&lt;li&gt;fake APIs&lt;/li&gt;
&lt;li&gt;demos&lt;/li&gt;
&lt;li&gt;internal scripts&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Now THIS:&lt;/strong&gt; Modularization with &lt;code&gt;include&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Yep — JSSON can include other &lt;code&gt;.jsson&lt;/code&gt; files and merge them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;include "database.jsson"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resolves path&lt;/li&gt;
&lt;li&gt;detects cycles (A includes B, B includes A → error)&lt;/li&gt;
&lt;li&gt;caching&lt;/li&gt;
&lt;li&gt;transpiles the included file&lt;/li&gt;
&lt;li&gt;merges into the root (with &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;overwrite&lt;/code&gt;, or &lt;code&gt;error&lt;/code&gt; mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;database.jsson&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db { host = localhost }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;main.jsson&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = "MyApp"
include "database.jsson"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSON output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"app"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MyApp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"db"&lt;/span&gt;&lt;span class="p"&gt;:&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;&lt;span class="nl"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"localhost"&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;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple. Direct. Done.&lt;/p&gt;




&lt;h1&gt;
  
  
  Full JSSON feature list 😏
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No quotes for simple values&lt;/li&gt;
&lt;li&gt;No commas&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;//&lt;/code&gt; comments&lt;/li&gt;
&lt;li&gt;Strings, numbers, booleans, arrays, objects&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Template Arrays
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age }
  João, 25
  Maria, 30
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Map (transformation)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;map (user) = {
  name = user.name
  active = true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Powerful Ranges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1..10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10..1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0..10 step 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"192.168.1.100".."192.168.1.150"&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Expressions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;+ - * / %&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Comparisons&lt;/li&gt;
&lt;li&gt;Ternary&lt;/li&gt;
&lt;li&gt;Concatenation&lt;/li&gt;
&lt;li&gt;Member access&lt;/li&gt;
&lt;li&gt;Precedence with &lt;code&gt;()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Modularization via Include
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Merge modes: &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;overwrite&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Cycle detection&lt;/li&gt;
&lt;li&gt;Include caching&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extras
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Zero-padding ranges (&lt;code&gt;emp001..emp010&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Mixed-type arrays&lt;/li&gt;
&lt;li&gt;Unlimited nested objects&lt;/li&gt;
&lt;li&gt;Variables inside &lt;code&gt;map&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-i&lt;/code&gt; input&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-o&lt;/code&gt; output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--merge-mode&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Quick comparison
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Logic Support&lt;/th&gt;
&lt;th&gt;Ranges&lt;/th&gt;
&lt;th&gt;Templates&lt;/th&gt;
&lt;th&gt;Modularization&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JSON&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YAML&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSV&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️ (partial)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Tables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSSON&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Data generation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Want to try it? Documentation &amp;amp; tools
&lt;/h1&gt;

&lt;p&gt;Documentation (still polishing sitemap, indexing soon):&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://jsson-docs.vercel.app" rel="noopener noreferrer"&gt;https://jsson-docs.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m working on the online playground this week, but for now you can try the current CLI build (tested on Windows):&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it right now (super quick)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the CLI (tested on Windows, use version 0.0.2):
&lt;a href="https://github.com/CarlosEduJs/jsson/releases" rel="noopener noreferrer"&gt;https://github.com/CarlosEduJs/jsson/releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Run in terminal:
&lt;code&gt;jsson -i input.jsson -o output.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Done: instant JSON.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full docs:&lt;br&gt;
👉 &lt;a href="https://jsson-docs.vercel.app" rel="noopener noreferrer"&gt;https://jsson-docs.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code Syntax Highlighting extension:&lt;br&gt;
👉 &lt;a href="https://marketplace.visualstudio.com/items?itemName=carlosedujs.jsson" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=carlosedujs.jsson&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  That’s it — you now know everything about JSSON.
&lt;/h1&gt;

&lt;p&gt;Thanks for reading! 🙌&lt;/p&gt;

</description>
      <category>json</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
