jq -r '
paths(scalars) as $p
| [ ( [ $p[] | tostring ] | join(".") )
, ( getpath($p) | tojson )
]
| join(" = ")
' <<'INPUT'
{
"a": 1,
"b": [ "red", "green", "blue" ],
"c": {
"d": [
{
"a": 100,
"b": 200,
"c": "x\ny\nz"
},
{
"a": 101,
"b": 201
}
]
}
}
INPUT
Output
a = 1
b.0 = "red"
b.1 = "green"
b.2 = "blue"
c.d.0.a = 100
c.d.0.b = 200
c.d.0.c = "x\ny\nz"
c.d.1.a = 101
c.d.1.b = 201