Jq - Невозможно индексировать строку со строкой «ключ»

У меня есть файл JSON, который содержит подобные записи, например:

  {
    "timeZone": "+0200",
    "deviceCode": 202590286,
    "type": 8,
    "version": 1622385523034,
    "recordId": "TkgTDAAAAAAIAAAArF62vXkBAAA = ",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622385516204,
    "endTime": 1622385516204,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "unit": "0",
        "startTime": 1622385516204,
        "endTime": 1622385516204,
        "value": "{\"age\":29,\"basalMetabolism\":2266.0,\"bmi\":34.0,\"bodyAge\":38,\"bodyFatRate\":33.20000076293945,\"bodyScore\":67.0,\"bodySize\":5,\"bodyWeight\":115.19999694824219,\"boneSalt\":3.989405632019043,\"extendAttribute\":\"0\",\"gender\":1,\"heartRate\":84,\"height\":184,\"moisture\":51.61684036254883,\"moistureRate\":44.8062858581543,\"muscleMass\":72.9608154296875,\"pole\":1,\"proteinRate\":21.34735107421875,\"skeletalMusclelMass\":42.30829620361328,\"visceralFatLevel\":20.0}",
        "key": "WEIGHT_BODYFAT_BROAD"
      }
    ]
  },
 {
    "timeZone": "+0200",
    "deviceCode": 202576998,
    "type": 7,
    "version": 1622408526036,
    "recordId": "ZhQTDAAAAAAHAAAAIAvJvXkBAAA = ",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622386740000,
    "endTime": 1622386800000,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "unit": "0",
        "startTime": 1622386740000,
        "endTime": 1622386800000,
        "value": "78.0",
        "key": "DATA_POINT_DYNAMIC_HEARTRATE"
      }
    ]
  },
 {
    "timeZone": "+0800",
    "deviceCode": 202590286,
    "type": 8,
    "version": 1622615424878,
    "recordId": "TkgTDAAAAAAIAAAAAHxqy3kBAAA = ",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622615424000,
    "endTime": 1622615424000,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "startTime": 1622615424000,
        "endTime": 1622615424000,
        "value": "{\"age\":29,\"bodyWeight\":114.3,\"extendAttribute\":\"0\",\"gender\":1,\"height\":184,\"pole\":1,\"weightDivision\":2}",
        "key": "WEIGHT_BODYFAT_BROAD"
      }
    ]
  },

Я пытаюсь использоватьmap(select(.key == "WEIGHT_BODYFAT_BROAD")) для фильтрации записей этого типа, но получил сообщение об ошибке.

jq: ошибка (в: 22): невозможно индексировать строку со строкой «ключ» jq: ошибка синтаксического анализа: ожидаемое значение перед ',' в строке 22, столбец 4, выход статус 5

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
218
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш фрагмент представляет собой полный файл, в нем отсутствует массив вокруг всех записей. Файл JSON должен содержать один «элемент» в «корне», это может быть либо объект ({...}), либо массив ([...]).

В вашем случае JSON состоит из нескольких объектов, поэтому вам необходимо обернуть их в массив. Попробуйте вставить [ в начало файла и ] в самый конец, больше ничего не меняйте.

Затем попробуйте еще раз вызвать в jq.

Другие вопросы по теме

Входной массив целых чисел: почему возникает ошибка синтаксического анализа при использовании функции чтения?
Разбор арифметического выражения с переменной с использованием менгира
Regex для идентификации и извлечения структурированной информации
Я хочу извлечь все объекты JSON из этого текстового файла и создать словарь. Как видите, в моем тексте в качестве значения ключа присутствуют вложенные объекты
Как анализировать JSON без учета регистра в фабрике данных Azure
Оператор приведения :: не анализируется Apache Calcite
Разбор PHP-файла для получения массива параметров
Различие между списком лямбда-параметров и выражением группировки в анализаторе рекурсивного спуска
Как разделить столбец с разделителями каналов на новые столбцы в hive sql?
ANTLR принимает специальные символы, такие как . (точка) и (запятая) в идентификаторе или выражении