JSON is a text format for nested data: objects with named keys, arrays, strings, numbers, booleans and null. It has no date type and no comments.
Who uses it
Every web API, most configuration files and anything that talks to JavaScript.
Reading JSON
Four shapes all read correctly: an array of objects, an array of arrays with a header row, an object of column arrays, and an object keyed by row id. A single wrapper key holding the array, which is how most APIs reply, is unwrapped automatically. Nested objects are flattened one level into dotted keys; anything deeper is kept as JSON text in the cell, because a table cannot hold a tree.
Writing JSON
You choose the shape. An array of objects is the default and the one most code expects. A 2D array is smaller. Column arrays suit charting libraries. A keyed object suits lookups by id.
The specification
JSON is defined by ECMA-404. Reading the primary source settles most arguments about edge cases faster than searching for them does.