JSON 파일에서 특정 키 값 추출

JSON 파일에서 특정 키 값 추출

다음과 같은 거대한 JSON이 있습니다. 견본

{
  "Key": "4fa21496-3534-4480-8405-a0f7699a915e",
  "FirstName": "XX",
  "XX": "Liggins",
  "City": "Dallas",
  "RegionCode": "TX",
  "RegionName": "Texas",
  "Country": "United States",
  "Latitude": "32.783060",
  "Longitude": "-96.806670",
  "TimeZone": "America/Chicago",
  "IsCASL": false,
  "Updated": "2018-02-28T07:32:28",
  "HQCompanyName": "IHOP",
  "Position": "Server",
  "Level": "General",
  "Department1": "General",
  "DecisionMaker": false,
  "EmailAddress": "[email protected]",
  "EmailValidationStatus": "AcceptAll",
  "EmailValidationDate": "2018-02-10T03:02:07.1692141+00:00",
  "HQCompanyId": "XX2f37e171e26112cb",
  "Experience": [
    {
      "HQCompanyId": "XX2f37e171e26112cb",
      "Title": "Server",
      "Level": "General",
      "Department1": "General",
      "DecisionMaker": false,
      "Start": "2014",
      "End": "2015",
      "EmailAddress": "[email protected]",
      "SecondaryCompanyId": "10407780-c062-40c9-8783-110aa931a9c5",
      "Updated": "2018-08-31T23:52:31.663147Z"
    },
    {
      "HQCompanyId": "128ce753-6a72-4028-8a17-d76a1c53b22e",
      "Title": "XX",
      "Level": "General",
      "Department1": "General",
      "DecisionMaker": false,
      "Start": "May 2015",
      "End": "December 2015",
      "Duration": "7 months",
      "Updated": "2018-08-31T23:52:31.663147Z"
    }
  ],
  "Education": [
    {
      "Name": "XX",
      "Degree": "XX or equivalent",
      "Start": "2004",
      "End": "2008"
    }
  ],
  "SearchUrl": "https://www.google.com/#newwindow=1&q=XX+X",
  "SourceList": []
}

JSON 파일에서 모든 이메일 주소를 검색하고 싶습니다. 기본적으로 user@domain다음 EmailAddress: "user@domain"과 같습니다.

[email protected]
[email protected]

답변1

사용jq, 적절한 JSON 구문 분석 도구:

$ jq -r '..|.EmailAddress? //empty' infile.json
[email protected]
[email protected]

온라인으로 시도해 보세요:https://jqplay.org/s/yjkKkCxecg


~로부터jq 매뉴얼:

--raw-output / -r:
이 옵션을 사용하면 필터 결과가 문자열인 경우 따옴표가 포함된 JSON 문자열 형식이 아닌 표준 출력에 직접 기록됩니다.

재귀 하강:..
재귀적으로 하강하여 .모든 값을 생성합니다.
[...]
예제에서 우리는 ..|.foo?"below" 에서 발견된 객체에서 객체 키 "foo" 의 모든 값을 찾는 데 사용했습니다 ..

선택적 개체 식별자-색인:.foo?
와 비슷 하지만 가 배열이나 객체가 아닌 .foo경우에는 오류조차 출력하지 않습니다 ..

대체 연산자: //
양식의 필터는 및 이외의 결과를 생성하는 경우 a // b와 동일한 결과를 생성합니다 . 그렇지 않으면 와 동일한 결과가 생성됩니다 .aafalsenulla // bb

이는 기본값을 제공하는 데 유용합니다. 입력에 요소가 없는지 .foo // 1평가합니다 .1.foo

empty
empty결과가 반환되지 않습니다. 전혀. 심지어 null.

관련 정보