2022-05-30T17:30:30 Hey there, this is a proposal for a JSON extension that I call `Tagged JSON'. I feel like this could make JSON more convenient for applications where otherwise one would prefer to use XML, but as we all know it's always a Bad Idea to use XML. I'm sure you peeps will figure out how the thing works from examples below. I hope to write a reference implementation for this one day because this looks fun. P.S.: there's a thing also called `Tagged JSON' at , it's an entirely diffent thing and I happen to hate it. My idea is just better, you have to admit it whether you like it or not. - M. Hello { "object": World { "population": "growing" }, "foo": "bar" } ======> { "type": "Hello", "object": { "type": "World", "population": "growing" }, "foo": "bar" } Blog { "title": "Eating blog", Post { "date": "2 days before today", "text": "Didn't eat well today at all." }, Advertisement { "link": "https://example.com", "text": "Buy now: new cool examples" }, Post { "date": "yesterday", "text": "I ate well today." } } ======> { "type": "Blog", "title": "Eating blog", "children": [ { "type": "Post", "date": "2 days before today", "text": "Didn't eat well today at all." }, { "type": "Post", "date": "yesterday", "text": "I ate well today." } ] } Add { Number 8, Number 9 } ======> { "type": "Add", "children": [ { "type": "Number", "value": 8 }, { "type": "Number", "value": 9 } ] } Order { Natural Number 9 { "size": "large" } } ======> { "type": "Order", "children": [ { "type": "Natural", "value": { "type": "Number", "value": 9, "size": "large" } } ] } ImNotSureWhy { TaggedObject { "foo": "bar" } { "baz": "qux" }, TaggedArray [1, 2, 3] { "size": 3, } } ======> { "type": "ImNotSureWhy", "children": [ { "type": "TaggedObject", "value": { "foo": "bar" }, "baz": "qux" }, { "type": "TaggedArray", "value": [1, 2, 3], "size": 3 } ] }