If you get an error like
parse error: Invalid numeric literal at line 1, column 7
this is could be because the json contains single quotes instead of double quotes. This is invalid JSON:
{'red': {'hue': {'dark': 2, 'white': 1}}, 'blue': {'blue': {'dark': 3, 'white': 3}, 'blue-2': {'dark': 3, 'white': 3}}}
JSON uses double quotes for strings. Use this to pipe the command to sed. Notice the double quotes around the whole json in echo command (it won't work otherwise):
echo "{'red': {'hue': {'dark': 2, 'white': 1}}, 'blue': {'blue': {'dark': 3, 'white': 3}, 'blue-2': {'dark': 3, 'white': 3}}}" | sed 's/'\''/"/g' | jq .
Output:
{
"red": {
"hue": {
"dark": 2,
"white": 1
}
},
"blue": {
"blue": {
"dark": 3,
"white": 3
},
"blue-2": {
"dark": 3,
"white": 3
}
}
}
Another problem could be unquoted true or false statements, so quote those instances in the file.
“freeshipping”: false → “freeshipping”: “false”