Как я могу красиво напечатать JSON в сценарии оболочки? - PullRequest
2751 голосов
/ 09 декабря 2008

Существует ли (Unix) сценарий оболочки для форматирования JSON в удобочитаемой форме?

По сути, я хочу преобразовать следующее:

{ "foo": "lorem", "bar": "ipsum" }

... примерно так:

{
    "foo": "lorem",
    "bar": "ipsum"
}

Ответы [ 54 ]

0 голосов
/ 16 ноября 2012

Я знаю, что в оригинальном посте просили сценарий оболочки, но есть так много полезных и не относящихся к делу ответов, которые, вероятно, не помогли первоначальному автору. Добавление к неактуальности:)

Кстати, я не мог заставить работать какие-либо инструменты командной строки.

Если кто-то хочет простой код JSON JavaScript, он может сделать:

JSON.stringfy(JSON.parse(str), null, 4)

http://www.geospaces.org/geoweb/Wiki.jsp?page=JSON%20Utilities%20Demos

Вот код JavaScript, который не только накладывает JSON, но и упорядочивает их по их атрибуту или по атрибуту и ​​уровню.

Если ввод

{ "c": 1, "a": {"b1": 2, "a1":1 }, "b": 1},

он либо печатает (группирует все объекты вместе):

{
     "b": 1,
     "c": 1,
     "a": {
          "a1": 1,
          "b1": 2
     }
}

ИЛИ (только заказы по ключу):

{
 "a": {
      "a1": 1,
      "b1": 2
 },
 "b": 1,
 "c": 1
}
0 голосов
/ 19 ноября 2014

Вы также можете использовать онлайн-инструменты вместо этого, если это вариант для вас.

Я считаю http://jsonprettyprint.net самым простым и легким.

0 голосов
/ 26 января 2017
0 голосов
/ 15 октября 2016

Если вы не возражаете против использования стороннего инструмента, вы можете просто curl to jsonprettyprint.org . Это для случая, когда вы не можете установить пакеты на машине.

curl -XPOST https://jsonprettyprint.org/api -d '{"user" : 1}'
...