Сортировка массива объектов в массиве по самой последней временной метке, а затем сортировка внешнего массива по метке времени первого объекта каждого массива, используя jq

#json #jq

#json #jq

Вопрос:

Сортировка массива объектов в массиве по самой последней временной метке, а затем сортировка внешнего массива по метке времени первого объекта каждого массива, используя jq .

Это пример данных JSON на этапе jq конвейера, где я застрял.

 [
  [
    {
      "created_at": "2020-09-26T14:48:46.000Z",
      "conversation_id": "1309867515456237571",
      "id": "1309867515456237571",
      "text": "example1"
    }
  ],
  [
    {
      "created_at": "2020-09-26T14:48:47.000Z",
      "conversation_id": "1309867518455156736",
      "id": "1309867518455156736",
      "text": "example2"
    },
    {
      "created_at": "2020-09-26T14:48:47.000Z",
      "conversation_id": "1309867518455156736",
      "id": "1309867517846810625",
      "text": "example3"
    },
    {
      "created_at": "2020-09-26T14:48:46.000Z",
      "conversation_id": "1309867518455156736",
      "id": "1309867516659937284",
      "text": "example4"
    }
  ],
  [
    {
      "created_at": "2020-09-26T14:48:48.000Z",
      "conversation_id": "1309867524473999364",
      "id": "1309867524473999364",
      "text": "example5"
    },
    {
      "created_at": "2020-09-26T14:48:47.000Z",
      "conversation_id": "1309867524473999364",
      "id": "1309867520468291586",
      "text": "example6"
    },
    {
      "created_at": "2020-09-26T14:48:47.000Z",
      "conversation_id": "1309867524473999364",
      "id": "1309867520153845760",
      "text": "example7"
    }
  ],
  [
    {
      "created_at": "2020-09-26T14:48:48.000Z",
      "conversation_id": "1309867524750749705",
      "id": "1309867524750749705",
      "text": "example8"
    }
  ]
]
  

Все, что я пробовал, заканчивается ошибкой, подобной этой,

 jq: error (at <stdin>:8): Cannot index string with string "created_at"
  

Ответ №1:

Может быть, это?

 jq '.[] |= sort_by(.created_at) | sort_by(.[].created_at)'