Используйте jq, чтобы получить массив из json - PullRequest
1 голос
/ 11 ноября 2019

У меня есть следующий json

    {
    "status": "success",
    "data": {
            "resultType": "matrix",
            "result": [{
                    "metric": {},
                    "values": [[1573452693.024, "36380.58030773418"], [1573452707.024, "51397.82785694454"], [1573452721.024, "38711.55804872829"], [1573452735.024, "47801.74418514242"], [1573452749.024, "42140.81258908656"]]
                    }]
            }
    }

Использование jq Я извлекаю values следующим образом:

    curl "LINK" | .\\jq.exe -c '.data.result[].values'

Но это возвращает строку, и мне нужно пройти черезполученный массив. Что мне нужно сделать с этими значениями: 1. Получить пары;2. Измените Unix TimeStamp на читабельный;3. Сохранить в CSV. Как я могу извлечь массив в качестве вывода?

Редактировать для комментария в ответе Тора с расширенным json:

{
    "status": "success",
    "data": {
        "resultType": "matrix",
        "result": [{
            "metric": {"container_name":"name1"},
            "values": [[1573452693.024, "36380.58030773418"], [1573452707.024, "51397.82785694454"], [1573452721.024, "38711.55804872829"], [1573452735.024, "47801.74418514242"], [15734 52749.024, "42140.81258908656"]]
        },{
            "metric": {"container_name":"name2"},
            "values": [[1573452693.024, "36380.58030773418"], [1573452707.024, "51397.82785694454"], [1573452721.024, "38711.55804872829"], [1573452735.024, "47801.74418514242"], [15734 52749.024, "42140.81258908656"]]
        },{
            "metric": {"container_name":"name3"},
            "values": [[1573452693.024, "36380.58030773418"], [1573452707.024, "51397.82785694454"], [1573452721.024, "38711.55804872829"], [1573452735.024, "47801.74418514242"], [15734 52749.024, "42140.81258908656"]]
        }
        ]
    }
}

1 Ответ

4 голосов
/ 11 ноября 2019

Вы можете сделать все это в jq, например:

jq -r '.data.result[].values | .[] | .[0] |= strftime("%Y-%m-%d %H:%M") | @csv'

Вывод:

"2019-11-11 06:11","36380.58030773418"
"2019-11-11 06:11","51397.82785694454"
"2019-11-11 06:12","38711.55804872829"
"2019-11-11 06:12","47801.74418514242"
"2019-11-11 06:12","42140.81258908656"
...