ошибка: не удалось прочитать входной объект (не шаблон?): ошибка преобразования YAML в JSON: yaml: значения сопоставления недопустимы в этом контексте

#java #json #yaml

#java #json #yaml

Вопрос:

Что означает эта ошибка? Это из-за отступа? Есть ли какой-либо способ автоматического выравнивания файлов yaml

Я попытался исправить это, выровняв и т.д., Но это не сработало, и моя сборка jenkins завершается сбоем.

 - name: SPLUNK_LOG_TOKEN
   valueFrom:
    secretKeyRef:
        name: splunk-secret
        key: splunk.token
- name: SPLUNK_LOG_URL             //error in this line
   valueFrom:
    confi&MapKeyRef:
       name: splunk-confi&
       key: splunk.url
  

Ответ №1:

Недопустимый YAML (в обоих элементах):

 - name: SPLUNK_LOG_TOKEN
   valueFrom:
  

Это потому, что valueFrom имеет больший отступ, чем name . Таким образом, YAML считает, что это valueFrom продолжение скаляра SPLUNK_LOG_TOKEN . Однако : следует, который завершает неявный ключ сопоставления. И неявные ключи сопоставления запрещены в многострочном скалярном контексте, отсюда и ошибка.

Есть ли какой-либо способ автоматического выравнивания файлов yaml

Отступ в YAML является частью семантики (как в Python). По сути, вы спрашиваете, можете ли вы угадать предполагаемую семантику для файлов с плохим отступом. Хотя теоретически это не невозможно (я имею в виду, вы могли обучить нейронную сеть вопросам синтаксиса YAML в StackOverflow; я видел эту конкретную проблему бесчисленное количество раз), я не думаю, что существует легко применимое решение.

Вероятным решением вашей проблемы является

 - name: SPLUNK_LOG_TOKEN
 valueFrom:
  

однако я не могу быть уверен на 100%; возможно, вы скорее хотите сделать что-то вроде

 - name:
    id: SPLUNK_LOG_TOKEN
    valueFrom:
  

if valueFrom должно быть дочерним элементом name .

Ответ №2:

Выделенное значение является недопустимым шаблоном yaml. - name: SPLUNK_LOG_TOKEN - name: SPLUNK_LOG_URL .

Это должно быть что-то вроде этого

 - name: 
   name: SPLUNK_LOG_TOKEN
   valueFrom:
    secretKeyRef:
        name: splunk-secret
        key: splunk.token
- name:             
   name: SPLUNK_LOG_URL 
   valueFrom:
    confi&MapKeyRef:
       name: splunk-confi&
       key: splunk.url
  

Если вы такой же любитель JSON, как я, то вы можете попробовать этот онлайн конвертерhttps://www.json2yaml.com/convert-yaml-to-json

Когда я был новичком в yaml, я записывал меньшие фрагменты данных JSON и преобразовывал их с помощью онлайн-https://www.json2yaml.com/convert-yaml-to-json в формат YAML. В Интернете доступны и другие инструменты, но, исходя из личного опыта, я предпочел этот.