Подтвердить что ты не робот

Как мне распечатать файл JSON из командной строки?

У меня есть файл с последовательностью элемента JSON:

{ element0: "lorem", value0: "ipsum" }
{ element1: "lorem", value0: "ipsum" }
...
{ elementN: "lorem", value0: "ipsum" }

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

Я видел этот пост, и я думаю, что это хорошая отправная точка!

Моя идея состоит в том, чтобы перебрать строки в файле, а затем:

while read row; do echo ${row} | python -mjson.tool; done < "file_name"

У кого-нибудь есть другие идеи?

4b9b3361

Ответ 1

Перенести результаты из файла в инструмент python json 2.6 и далее

cat 'file_name' | python -m json.tool

Ответ 2

Вы можете использовать инструмент Python JSON (требуется Python 2. 6+).

Например:

echo '{ "element0" : "lorem", "element1" : "ipsum" }' | python -m json.tool

Который даст вам:

{
    "element0": "lorem",
    "element1": "ipsum"
}

Ответ 3

jq - легкий и гибкий JSON-процессор командной строки

Я чувствовал, что это заслуживает отдельной записи, когда это заняло у меня больше времени, чем нужно было обнаружить. Я искал простой способ красиво распечатать вывод json docker inspect -f. Это было кратко упомянуто выше Нуфалом Ибрагимом как часть другого ответа.

С веб-сайта JQ (https://stedolan.github.io/jq/):

jq похож на sed для данных JSON - вы можете использовать его для нарезки, фильтрации, отображения и преобразования структурированных данных с той же легкостью, с которой sed, awk, grep и friends позволяют вам играть с текстом.

По умолчанию он обеспечивает цветной вывод, и вам просто нужно перенаправить на jq, например,

cat file | jq . 

Пример:

"Необработанный" вывод json vs тот же канал, что и jq

Ответ 4

Цветной вывод с использованием Pygmentize + Python json.tool

Пигментирование является убийственным инструментом. Видеть это. Я объединяю python json.tool с пигментированием

echo '{"foo": "bar"}' | python -m json.tool | pygmentize -g

Для других подобных инструментов и инструкции по установке см. Ответ, связанный выше.

Вот живая демонстрация:

demo

Ответ 5

Есть их куча. У меня лично есть этот псевдоним в моем .zshrc

pjson () {
        ~/bin/pjson.py | less -X
}

где pjson.py есть

#!/usr/bin/env python

import json
import sys

try:
    input_str = sys.stdin.read()
    print json.dumps(json.loads(input_str), sort_keys = True, indent = 2)
except ValueError,e:
    print "Couldn't decode \n %s \n Error : %s"%(input_str, str(e))

Позволяет мне использовать это в командной строке как канал (что-то вроде curl http://.... | pjson).

OTOH, Пользовательский код является обязательством, поэтому jq, который для меня похож на золотой стандарт. Он написан на C (и, следовательно, переносится без зависимостей, таких как Python или Node), делает гораздо больше, чем просто красивую печать и быстро.

Ответ 6

Вы можете использовать пакет jq, который может быть установлен во всех системах Linux. Установите инструмент, используя следующие команды.

# Redhat based systems(Centos)
yum install -y epel-release
yum install -y jq

# Debian based systems
apt install -y jq

После этого вы сможете передавать потоки текста в инструмент jq.

echo '{"test":"value", "test2":"value2"}' | jq

Надеюсь, этот ответ поможет.

Ответ 7

В Mac OS установите jq с помощью команды

$ brew install jq

Вы можете получить красивую печать JSON так же, как,

$ curl -X GET http://localhost:8080/api/v1/appointments/1  | jq


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   117    0   117    0     0   8404      0 --:--:-- --:--:-- --:--:--  9000
{
  "craeted_at": "10:24:38",
  "appointment_date": "2019-02-08",
  "name_of_doctor": "Monika",
  "status": true,
  "price": 12.5,
  "id": 1
}

Ответ 8

Решение Shawn, но для Python 3:

echo '{"foo": "bar"}' | python3 -m json.tool

Ответ 9

Для форматирования вашего JSON с правильным отступом используйте JSON.stringify

console.log(JSON.stringify(your_object, null, 2)); // prints in b/w

Но чтобы сделать его красивее, добавив цвета, вы можете проверить мою посылку beautify-json

украсьте-

JSONПример:

const { jsonBeautify } = require('beautify-json')

let your_object = {
    name: 'Nikhil',
    age: 22,
    isMarried: false,
    girlfriends: null,
    interestedIn: [
        'javascript',
        'reactjs',
        'nodejs'
    ]
}

jsonBeautify(your_object) // It will beautify your object with colors and proper indentation and display it on the terminal

Выход: Screenshot of the beautified object printed in terminal