development

명령 줄에서 JSON 파일을 어떻게 예쁘게 인쇄 할 수 있습니까?

big-blog 2020. 12. 31. 23:22
반응형

명령 줄에서 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"

다른 아이디어가있는 사람이 있습니까?


파일의 결과를 python json 도구 2.6 이상으로 파이프합니다.

cat 'file_name' | python -m json.tool

Python JSON 도구를 사용할 수 있습니다 (Python 2.6 이상 필요).

예를 들면 :

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

당신에게 줄 것 :

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

jq-가볍고 유연한 명령 줄 JSON 프로세서

발견해야 할 것보다 더 오래 걸렸을 때 나는 이것이 그 자체로 들어갈 가치가 있다고 느꼈다. 의 json 출력을 예쁘게 인쇄하는 간단한 방법을 찾고있었습니다 docker inspect -f. Noufal Ibrahim이 다른 답변의 일부로 위에서 간략하게 언급했습니다.

jq 웹 사이트 ( https://stedolan.github.io/jq/ )에서 :

jq는 sed for JSON 데이터와 비슷합니다. sed, awk, grep 및 friends를 사용하여 텍스트로 플레이 할 수있는 것과 마찬가지로 쉽게 구조화 된 데이터를 분할하고 필터링하고 매핑하고 변환하는 데 사용할 수 있습니다.

기본적으로 컬러 출력을 제공하며 간단히 다음과 같이 파이프해야합니다 jq.

cat file | jq . 

예:

"원시"json 출력jq에 파이프 된 동일한 결과


Pygmentize + Python json.tool을 사용한 컬러 출력

Pygmentize 는 킬러 도구입니다. 이것 좀 봐. python json.tool과 pygmentize를 결합합니다.

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

다른 유사한 도구 및 설치 지침은 위에 링크 된 답변을 참조하십시오.

다음은 라이브 데모입니다.

데모


그것들이 많이 있습니다. 개인적으로이 별칭은 내.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와 같은 종속성없이 이식 가능) 예쁜 인쇄 이상의 작업을 수행하고 빠릅니다.


당신이 사용할 수있는 jq모든 리눅스 시스템에 설치할 수 있습니다 패키지를. 아래 명령을 사용하여 도구를 설치하십시오.

# 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

이 답변이 도움이되기를 바랍니다.


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
}

Shawn의 솔루션이지만 Python 3 :

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

적절한 들여 쓰기를 사용하여 JSON 형식을 지정하려면 JSON.stringify

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

하지만 색상을 추가하여 더 예쁘게 만들려면 내 패키지를 확인하십시오. beautify-json

beautify-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

출력 :단말기에 인쇄 된 아름다운 물체의 스크린 샷

참조 URL : https://stackoverflow.com/questions/20265439/how-can-i-pretty-print-a-json-file-from-the-command-line

반응형