# JSON (/academy/json)



**JSON** is how two programs pass structured data without sharing a language.

JavaScript Object Notation. Curly braces. Quoted keys. Values that are strings, numbers, booleans, lists, or more objects. No comments. That last part is on purpose. The file is a payload, not an essay.

```json
{ "title": "Buy milk", "done": false }
```

Your [REST](/academy/rest) [API](/academy/api) speaks this on the wire. So does almost every vendor. So does the clipboard when an [agent](/academy/agent) says "here's the data." A Python service can hand this to your TypeScript [frontend](/academy/frontend-backend) and both sides parse it.

**The schema is the blank. JSON is one filled answer.**

The [schema](/academy/schema) says which keys exist and what type they are. JSON is the actual object. If a key is missing or a number is a string, the parse should fail before you write the [database](/academy/database).

You will see it everywhere the [builder](/builder) touches: request bodies, responses, `package.json`, the Polar event. Learn to read the braces as a labeled list. You are not looking at code. You are looking at a bag of fields.

[YAML](/academy/yaml) can hold the same facts. Put JSON on the wire. Put YAML in the config a human has to edit. Do not convert by eye at 4 a.m. Use a tool. And never drop a [secret](/academy/secret) into a JSON blob you then commit "as fixture data."

**What this unlocks**

Once you can read a JSON body, the Network tab stops being a blur.

The [API](/academy/api) is not magic. It is this object, going in, coming back.
