Ошибка jq при разборе файла json внутри jenkins Shell - PullRequest
0 голосов
/ 29 июня 2018

Я хочу проанализировать значение filepath из json. анализируя его через jq и видя проблему относительно не определенной на верхнем уровне. Пожалуйста, найдите детали JSON и ошибку ниже:

"environment":{
             "stage":{
                       "testing":[
{
 "tag":"1.0"
  "filepath":"C:/test/conf"
   "hostname":"test"
}]}}

**command Used in Execute shell:**
 jq -r ".'environment.stage.testing[].filePath' env.json

**Error Faced**:
jq: error: environments/0 is not defined at <top-level>, line 1:
environment.stage.testing[].filePath
jq: 1 compile error

TIA

Ответы [ 2 ]

0 голосов
/ 01 июля 2018
  1. Размещенные данные соответствуют требованиям HJSON и могут быть преобразованы в JSON:

    hjson -j

  2. Фильтр jq включает .filePath, тогда как HJSON включает только ключ с именем filepath.

  3. Фильтр, соответствующий опубликованным данным:

    .environment.stage.testing []. Путь_к_файл

Соединение вышеперечисленного:

$ hjson -j < so-jenkins-shell.hjson |
  jq -r '.environment.stage.testing[].filepath'
C:/test/conf
0 голосов
/ 29 июня 2018

При условии, что вы исправили файл JSON, добавив запятую для разделения элементов tag, filepath и hostname:

{
  "environment": {
    "stage": {
      "testing": [
        {
          "tag": "1.0",
          "filepath": "C:/test/conf",
          "hostname": "test"
        }
      ]
    }
  }
}

Вы можете использовать эту команду jq:

jq -r '.environment.stage.testing[].filepath' env.json

Обратите внимание на ключевое слово filepath вместо filePath в вашей команде.

...