Как добавить json-объект в json файл с помощью оболочки script

json файл следующим образом:

{"name" :"sam",
"age":23,
"designation":"doctor"}

теперь я хочу добавить еще один json-объект { "location": "canada" } в конец файла, используя bash script я попробовал echo "{" location ":" canada "}" → sample.json

но результат

{"name" :"sam",
"age":23,
"designation":"doctor"} {location:canada}

но я хочу, чтобы это было так

{"name" :"sam",
"age":23,
"designation":"doctor", 
"location":"canada"}

предложите мне

Ответ 1

sed -i '$s/}/,\n"location":"canada"}/' sample.json

Результат:

{"name" :"sam",
"age":23,
"designation":"doctor",
"location":"canada"}

Ответ 2

Чтобы слить два json-объекта, вы можете использовать jq утилиту командной строки:

$ jq -s add sample.json another.json

Вывод:

{
  "name": "sam",
  "age": 23,
  "designation": "doctor",
  "location": "canada"
}

Чтобы обновить один атрибут:

$ jq '.location="canada"' sample.json

Он производит тот же вывод.

Чтобы добавить "doctor" в местоположение:

$ jq '.location = "doctor" + .location' input.json

Вывод:

{
  "name": "sam",
  "age": 23,
  "designation": "doctor",
  "location": "doctorcanada"
}