programing

jq에서 해당 키의 키 및 값을 기준으로 json 파일을 정렬하는 방법

javajsp 2023. 3. 10. 21:05

jq에서 해당 키의 키 및 값을 기준으로 json 파일을 정렬하는 방법

Pentaho CTools 라이브러리를 사용하여 웹사이트를 구축하고 있습니다. 이 라이브러리는 대시보드의 일부에 JSON 형식의 파일을 쓰는 그래픽 대시보드 에디터를 갖추고 있습니다.

이 파일들을 git에 체크인하기 전에 키별, 특정 키의 값별로 정렬하기 위해 변환하고 싶습니다.편집자가 모든 json 필드를 재배치하는 습관이 있기 때문에 그 목적은 차이를 쉽게 만드는 것입니다.

예를 들어 다음과 같은 경우가 있습니다.

{
  "components": {
    "rows": [
      {
        "id": "CHARTS",
        "name": "Charts",
        "parent": "UnIqEiD",
        "properties": [
          {
            "name": "Group",
            "type": "Label",
            "value": "Charts"
          }
        ],
        "type": "Label",
        "typeDesc": "<i>Group</i>"
      },
      {
        "id": "kjalajsdjf",
        "meta_cdwSupport": "true",
        "parent": "CHARTS",
        "properties": [
          {
            "name": "name",
            "type": "Id",
            "value": "Value1"
          },
          {
            "name": "title",
            "type": "String",
            "value": "Value2"
          },
          {
            "name": "listeners",
            "type": "Listeners",
            "value": "[]"
          },
...

우리는 할 수 있다jq --sort-keys(http://stedolan.github.io/jq/)에서 모든 키를 정렬합니다만, 이 키를 사용하는 방법을 찾는 데 어려움을 겪고 있습니다.sort_by특정 요소를 특정 키의 값에 따라 정렬하는 기능(위의 예에서는 정렬 기준)properties.name예를들면.좋은 생각 있어요?

좋아요, IRC 채널에서 도움을 좀 받아서 답을 찾았어요.

기본적으로 다음과 같습니다.

jq \
  '.components.rows|=sort_by(.id)|.components.rows[].properties|=sort_by(.name)' \
  file.json > out.json

올바른 개체를 선택합니다.
필요에 따라 어레이로 이행,
그리고나서sort_by단일값

난 노력했어sort_by(.components.rows.id)실패했어요.

|=대신|는 값을 삭제하지 않고 전달합니다.

이것은 질문에 대한 답변은 아니지만, 다음은 속성/키별로 정렬하는 다른 방법입니다.

jq --sort-keys . my_file > sorted_file

-혹은...

jq -S . my_file > sorted_file

언급URL : https://stackoverflow.com/questions/30331504/how-to-sort-a-json-file-by-keys-and-values-of-those-keys-in-jq