Отображение вывода curl в удобочитаемом формате JSON в сценарии оболочки Unix
В моем сценарии оболочки Unix, когда я выполняю команду curl, результат будет отображаться, как показано ниже, который я перенаправляю в файл:
{"type":"Show","id":"123","title":"name","description":"Funny","channelTitle":"ifood.tv","lastUpdateTimestamp":"2014-04-20T20:34:59","numOfVideos":"15"}
Но я хочу, чтобы этот вывод был помещен в читаемый формат JSON, как показано ниже в файле:
{"type":"Show",
"id":"123",
"title":"name",
"description":"Funny",
"channelTitle":"ifood.tv",
"lastUpdateTimestamp":"2014-04-20T20:34:59",
"numOfVideos":"15"}
Как мне отформатировать вывод таким образом?
Ответы
Ответ 1
Попробуйте сделать это:
curl ... | json_pp
или с помощью jq с использованием фильтра идентификации:
curl ... | jq '.'
![enter image description here]()
или с nodejs и bash:
curl ... | node <<< "var o = $(cat); console.log(JSON.stringify(o, null, 4));"
Проверьте https://stedolan.github.io/jq/
Ответ 2
Я предполагаю, что вы хотите превзойти вывод JSON.
Этого можно достичь с помощью python:
curl http://localhost:8880/test.json | python -mjson.tool > out.json
Ответ 3
-
brew install jq
-
command + | jq
- (пример:
curl localhost:5000/blocks | jq.
) - Наслаждайтесь!
![enter image description here]()
Ответ 4
Я нашел json_reformat очень удобным. Поэтому я просто сделал следующее:
curl http://127.0.0.1:5000/people/api.json | json_reformat
что это!
Ответ 5
python -m json.tool
Curl http://127.0.0.1:5000/people/api.json | python -m json.tool
также может помочь
Ответ 6
Это нужно добавить к ответу Гилла. Есть много способов сделать это, но лично я предпочитаю что-то легкое, легко запоминающееся и универсально доступное (например, поставляйте стандартную установку LTS с вашим предпочтительным стилем Linux или легко устанавливаемым) на общих системах * nix.
Вот варианты в их предпочтительном порядке:
-
Модуль Python Json.tool, например,
echo '{ "foo": "lorem", "bar": "ipsum" }' | python -mjson.tool(профи: почти везде, минусы: без цветового кодирования)
-
jq (может потребоваться однократная установка)
echo '{ "foo": "lorem", "bar": "ipsum" }' | JQ
(минусы: необходимо установить jq; профи: цветное кодирование и универсальный)
-
json_pp (доступно в Ubuntu 16.04 LTS), например.
echo '{ "foo": "lorem", "bar": "ipsum" }' | json_pp
-
Для пользователей Ruby,
gem install jsonpretty
echo '{ "foo": "lorem", "bar": "ipsum" }' | jsonpretty
Ответ 7
Проверьте curljson
$ pip install curljson
$ curljson -i <the-json-api-url>
Ответ 8
Вы можете использовать этот модуль узла
[sudo] npm i -g json
;//предлагаем не использовать привилегии root для установки модуля узла
затем просто добавьте |json
после curl.
curl http://localhost:8880/test.json |json
Ответ 9
Просто добавьте ключевое слово ?pretty
к вашей команде curl as-
Если ваша команда curl выглядит так:
curl -XGET 'http://localhost:9200/_cluster/state'
то, чтобы иметь довольно выходное использование, как это -
curl -XGET 'http://localhost:9200/_cluster/state'?pretty