2017-11-03 10 views
0

에는 다음과 같은 JSON 출력 : "problem_type"와 ":"키 "로 값 쌍 :이름 바꾸기 JSON 키 필드

[ 
{ 
    "id": "47", 
    "canUpdate": true, 
    "canDelete": true, 
    "canArchive": true, 
    "info": [ 
     { 
      "key": "problem_type", 
      "value": "PAN", 
      "valueCaption": "PAN", 
      "keyCaption": "Category" 
     }, 
     { 
      "key": "status", 
      "value": 3, 
      "valueCaption": "Closed", 
      "keyCaption": "Status" 
     }, 
     { 
      "key": "insert_time", 
      "value": 1466446314000, 
      "valueCaption": "2016-06-20 14:11:54.0", 
      "keyCaption": "Request time" 
     } 

는"정보 "에서 볼 수 있듯이 실제로 키 레이블 값 ":"PAN "다음에"valueCaption ":"PAN ""keyCaption ":"Category ". 이 예제에서 "problem_type": "PAN"및 "Category": "PAN"으로 표시되도록 파일을 다시 매핑해야합니다. 출력을 반복하여 키를 다시 매핑하는 가장 좋은 방법은 무엇입니까?이 방식으로 값 쌍을 구합니까? 그것을 할 필요가 어떻게

:

여기
[ 
{ 
    "id": "47", 
    "canUpdate": true, 
    "canDelete": true, 
    "canArchive": true, 
    "info": [ 
     { 
      "problem_type": "PAN", 
      "Category": "PAN" 
     }, 
     { 
      "status": 3, 
      "Status": "Closed" 
     }, 
     { 
      "insert_time": 1466446314000, 
      "Request time": "2016-06-20 14:11:54.0" 
     } 
+0

당신의 OS는 무엇입니까? – RomanPerekhrest

+0

어떤 프로그래밍 언어를 사용하고 있습니까? 제발 그 태그. – Vasan

+0

Linux 서버에서 Bash 스크립트를 사용하여 Linux 서버에서 json 데이터를 가져옵니다. 동일한 서버는 파일을 검색 한 후에 스크립트를 실행하여 파일을 변환합니다. – Godfried

답변

0

Update assignment |=

.[].info[] |= {(.key):.value, (.keyCaption):.valueCaption} 

샘플 실행을 사용하는 jq 솔루션은

$ jq -M '.[].info[] |= {(.key):.value, (.keyCaption):.valueCaption}' data.json 
[ 
    { 
    "id": "47", 
    "canUpdate": true, 
    "canDelete": true, 
    "canArchive": true, 
    "info": [ 
     { 
     "problem_type": "PAN", 
     "Category": "PAN" 
     }, 
     { 
     "status": 3, 
     "Status": "Closed" 
     }, 
     { 
     "insert_time": 1466446314000, 
     "Request time": "2016-06-20 14:11:54.0" 
     } 
    ] 
    } 
] 

Try it online at jqplay.org

( data.json의 데이터를 가정)
+0

똑똑! 고맙습니다. 완벽하게 작동합니다. – Godfried