JQ получает ответ об ошибке компиляции из запроса - PullRequest
0 голосов
/ 31 января 2020

Я хотел бы попросить вашего руководства для новичка ie, как я, при тестировании запроса в файле примера. Я получаю ошибку компиляции при тестировании. Пожалуйста, посоветуйте, что нужно настроить.

JSON FILE -> sample. json

    {
    "lambda": {
        "apple": [
            {
                "type": "fruit",
                "color": "red",
                "shape": "round",
                "cron": "0/10 * * * ? *"
            }
        ],
        "orange": [
            {
                "type": "fruit",
                "color": "orange",
                "shape": "round",
                "cron": "0/15 * * * ? *"
            }
        ],
        "apple-cider": [
            {
                "type": "juice",
                "color": "pink",
                "shape": "none",
                "cron": "0/30 * * * ? *"
            }
        ]
    }
}

Я получаю jq: 1 ошибка компиляции сообщение при попытке получить данные от яблочный сидр

# jq -r ".lambda."apple-cider"[].shape" test.json
jq: error: cider/0 is not defined at <top-level>, line 1:
.lambda.apple-cider[].shape
jq: 1 compile error

Ответы [ 2 ]

0 голосов
/ 31 января 2020

это работало с этой командой

jq -r '.lambda."apple-cider"[].type' test.json 
0 голосов
/ 31 января 2020

[Этот ответ отвечает Q как первоначально отправлено. До модификации вход был потоком JSON объектов.]

Причина, по которой вы видите несколько выходов, заключается в том, что ваш вход является потоком, а ваш фильтр применяется к каждому элементу в потоке.

Похоже, вы должны изменить свой фильтр, например,

.apple.color // empty

Относительно ключа "яблочный сидр" - так как он имеет специальный символ ("-"), вы не можете используйте сокращенный синтаксис. Какую бы версию jq вы не использовали, вы можете использовать сокращенную форму: .["apple-cider"]; Вы также можете использовать форму:

."apple-cider"
...