Как разобрать JSON со скриптингом оболочки для случая края скобки

Вам понадобится пакет build-essential для компиляции пакетов в debian. Просто выполните это в терминале:

sudo apt-get install build-essential

Это также установит некоторые другие пакеты, необходимые для компиляции (например, gcc). Это должно решить вашу проблему.

0
24.09.2018, 15:46
2 ответа

Предполагая, что документ JSON правильно сформирован и завершен, как, например,

{
  "items": [
    {
      "provider_name": "ucp-ipg",
      "subject_name": "rtm-instrumentation",
      "dataset_name": "rtm-instrumentation-dataset-hour-sliced",
      "dataset_key": [
        "2018-03-06T06:00:00Z",
        "000394e3-a9eb-40b6-9463-fbd588d20ba4"
      ],
      "record_count": 21,
      "state": "complete",
      "version": 0,
      "etag": "a221df62",
      "creation_timestamp": "2018-03-06T06:10:46.294-00:00",
      "created_by": "AAA",
      "modification_timestamp": "2018-03-06T06:10:46.294-00:00",
      "modified_by": "AAA"
    },
    {
      "provider_name": "ucp-ipg",
      "subject_name": "rtm-instrumentation",
      "dataset_name": "rtm-instrumentation-dataset-hour-sliced",
      "dataset_key": [
        "2018-03-06T06:00:00Z",
        "00097722-b02f-4938-bd4b-d935047c3837"
      ],
      "record_count": 17,
      "state": "complete",
      "version": 0,
      "etag": "aa4dbc25",
      "creation_timestamp": "2018-03-06T06:12:23.293-00:00",
      "created_by": "AAA",
      "modification_timestamp": "2018-03-06T06:12:23.293-00:00",
      "modified_by": "AAA"
    }
  ]
}

Массив dataset_keyвторого элемента itemможет быть получен с помощьюjq:

$ jq '.items[1].dataset_key' file.json
[
  "2018-03-06T06:00:00Z",
  "00097722-b02f-4938-bd4b-d935047c3837"
]

Измените [1]на [-1], чтобы получить dataset_keyиз последнего элемента item.

Чтобы получить необработанные данные элементов массива:

$ jq -r '.items[1].dataset_key[]' file.json
2018-03-06T06:00:00Z
00097722-b02f-4938-bd4b-d935047c3837
5
28.01.2020, 02:18

простой способ извлечь информацию из jsonjtc(предполагает, что ваш json исправлен):

bash $ jtc -w '<dataset_key>l+0' -r your.json 
[ "2018-03-06T06:00:00Z", "000394e3-a9eb-40b6-9463-fbd588d20ba4" ]
[ "2018-03-06T06:00:00Z", "00097722-b02f-4938-bd4b-d935047c3837" ]
bash $ 
0
28.01.2020, 02:18

Теги

Похожие вопросы