Amusingly, the tweet that inspired this blog post—which is linked in the second paragraph of the article—is
specifically about how automatically generating a JSON parser from your datatypes means you
don’t have to implement that kind of stuff on your own, and there is no possibility of some separate “schema” going out of sync with your application logic.
Of course, if you want to share the schema with downstream clients so that other programs can use it, that is a great use case for something like JSON Schema. It is a common interface that allows two different programs—quite possibly written in completely different languages—to communicate using the same format. That’s great! But it’s only half the story, because just having the schema doesn’t help you in any way to make sure the code actually respects that schema. That’s where integration with the language’s type system can help, perhaps by automatically generating types from the schema and then generating parsing/serialization functions that use those generated types.