Windows에서 jq 명령을 가져와 JSON 응답을 정형, 추출

18561 단어 curlJSONWindowsjqtech

명령은 돼요.


Windows에서 Mac의curl에서 자주 사용하는 jq 명령을 사용하고 싶어서 설치했습니다.
https://stedolan.github.io/jq/
일반적으로 curl 명령을 두드리면 JSON 응답이 1행으로 출력됩니다.또 일본어 문자열이 도피돼 내용이 잘 알려지지 않았다.
$ curl "http://geoapi.heartrails.com/api/json?method=searchByPostal&postal=1620067"
{"response":{"location":[{"city":"\u65b0\u5bbf\u533a","city_kana":"\u3057\u3093\u3058\u3085\u304f\u304f","town":"\u5bcc\u4e45\u753a","town_kana":"\u3068\u307f\u3072\u3055\u3061\u3087\u3046","x":"139.716002","y":"35.693258","prefecture":"\u6771\u4eac\u90fd","postal":"1620067"}]}}
jq 명령을 가져오면 응답하는 출력이 성형되어 보기 쉬워지고 필터 기능에 필요한 정보만 추출할 수 있습니다.
$ curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'
[
  {
    "sha": "d25341478381063d1c76e81b3a52e0592a7c997f",
    "commit": {
      "author": {
        "name": "Stephen Dolan",
        "email": "[email protected]",
        "date": "2013-06-22T16:30:59Z"
      },
      "committer": {
        "name": "Stephen Dolan",
        "email": "[email protected]",
        "date": "2013-06-22T16:30:59Z"
      },
      "message": "Merge pull request #162 from stedolan/utf8-fixes\n\nUtf8 fixes. Closes #161",
      "tree": {
        "sha": "6ab697a8dfb5a96e124666bf6d6213822599fb40",
        "url": "https://api.github.com/repos/stedolan/jq/git/trees/6ab697a8dfb5a96e124666bf6d6213822599fb40"
      },
      "url": "https://api.github.com/repos/stedolan/jq/git/commits/d25341478381063d1c76e81b3a52e0592a7c997f",
      "comment_count": 0
    },
    "url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f",
    "html_url": "https://github.com/stedolan/jq/commit/d25341478381063d1c76e81b3a52e0592a7c997f",
    "comments_url": "https://api.github.com/repos/stedolan/jq/commits/d25341478381063d1c76e81b3a52e0592a7c997f/comments",
    "author": {
      "login": "stedolan",
...
탁월한 편의성.

jq 명령 가져오기 방법


바로 가져오기 시작합니다.

다운로드


액세스공식 사이트, Windows용 exe 다운로드.

다운로드한exe 파일의 이름을 jq-win64.exe에서 jq.exe로 바꾸면 명령 호출이 수월해지기 때문에 변경해야 합니다.

환경 변수 경로 통과하기


exe 파일을 path를 통과하는 폴더로 이동합니다.사용자 폴더를 직접 아래로 이동합니다.
예) C:\Users\unsol\jq.exe
사용자 환경 변수Path를 선택하고 편집을 클릭합니다.

'새로 만들기' 에서 방금 exe 파일을 설치한 사용자 폴더를 추가합니다. (여기는 C:\Users\unsol
OK 를 눌러 닫습니다.
필요에 따라 재부팅

명령 실행 확인


명령 알림이나 bash 단말기 등을 켜서 jq 명령을 사용할 수 있는지 확인하십시오.다음 명령을 누르면 가져온 jq 버전만 표시하면 OK입니다.
$ jq -V
jq-1.6
도움말에서는 명령 옵션과 같은 자세한 내용을 참조할 수 있습니다.
$ jq --help
jq - commandline JSON processor [version 1.6]

Usage:  C:\Users\unsol\jq.exe [options] <jq filter> [file...]
        C:\Users\unsol\jq.exe [options] --args <jq filter> [strings...]
        C:\Users\unsol\jq.exe [options] --jsonargs <jq filter> [JSON_TEXTS...]

jq is a tool for processing JSON inputs, applying the given filter to
its JSON text inputs and producing the filter's results as JSON on
standard output.

The simplest filter is ., which copies jq's input to its output
unmodified (except for formatting, but note that IEEE754 is used
for number representation internally, with all that that implies).

For more advanced filters see the jq(1) manpage ("man jq")
and/or https://stedolan.github.io/jq

Example:

        $ echo '{"foo": 0}' | jq .
        {
                "foo": 0
        }

Some of the options include:
  -c               compact instead of pretty-printed output;
  -n               use `null` as the single input value;
  -e               set the exit status code based on the output;
  -s               read (slurp) all inputs into an array; apply filter to it;
  -r               output raw strings, not JSON texts;
  -R               read raw strings, not JSON texts;
  -C               colorize JSON;
  -M               monochrome (don't colorize JSON);
  -S               sort keys of objects on output;
  --tab            use tabs for indentation;
  --arg a v        set variable $a to value <v>;
  --argjson a v    set variable $a to JSON value <v>;
  --slurpfile a f  set variable $a to an array of JSON texts read from <f>;
  --rawfile a f    set variable $a to a string consisting of the contents of <f>;
  --args           remaining arguments are string arguments, not files;
  --jsonargs       remaining arguments are JSON arguments, not files;
  --               terminates argument processing;

Named arguments are also available as $ARGS.named[], while
positional arguments are available as $ARGS.positional[].

See the manpage for more options.

사용 예


curl 명령jq을 파이프로 연결하면 성형 후 응답을 출력할 수 있습니다.처음에는 잘 모르는 일본어 부분을 피하고 일반적인 읽을 수 있는 형식으로 출력했다.
$ curl -s "http://geoapi.heartrails.com/api/json?method=searchByPostal&postal=1620067" | jq
{
  "response": {
    "location": [
      {
        "city": "新宿区",
        "city_kana": "しんじゅくく",
        "town": "富久町",
        "town_kana": "とみひさちょう",
        "x": "139.716002",
        "y": "35.693258",
        "prefecture": "東京都",
        "postal": "1620067"
      }
    ]
  }
}
필터를 사용하면 JSON에서 필요한 정보를 쉽게 얻을 수 있습니다.
$ curl -s "http://geoapi.heartrails.com/api/json?method=searchByPostal&postal=1620067" | jq '.response.location[] | [.prefecture, .town, .city]'
[
  "東京都",
  "富久町",
  "新宿区"
]
jq 명령의 등급 인덱스 지정이나 정렬자를 더욱 고급스럽게 사용하려면 공식 매뉴얼을 참조하십시오.
jq Manual (development version)

좋은 웹페이지 즐겨찾기