How to read the path list
Every line describes one leaf value: the full path, an equals sign, then the value. Object keys join with dots (order.customer.name) and array elements append a zero-based index in brackets (order.items[1].sku). The list is depth-first in document order, so it reads top to bottom in the same sequence as the JSON itself — every path under items[0] appears before the first path under items[1], which makes it easy to eyeball one record at a time.
The $ root marker appears when there is no object key to start a path from. A top-level array lists $[0].sku and $[1].sku; a document that is a single bare string or number collapses to one line, $ = value; a document that is just {} or [] prints $ = {} or $ = []. When the top level is a non-empty object, paths start directly at the first key — order.id, not $.order.id — because that is exactly what you will type after a variable name in code.
Two details keep the list honest. Empty containers are not silently dropped: an empty object prints as path = {} and an empty array as path = [], so a key that exists-but-is-empty never masquerades as missing. And values are rendered in their JSON form — strings keep their double quotes, so "2" and 2 stay distinguishable at a glance — but anything longer than about 60 characters is cut with an ellipsis so a giant embedded blob cannot break the one-line-per-path layout.