Я пытаюсь автоматизировать выполнение заданий Talend с помощью Talend API, но получаю сообщение об ошибке, когда пытаюсь передать параметры контекста с помощью API.
JSON, который я кодирую до 64, выглядит следующим образом:
JSON='{ "actionName":"runTask", "authPass": "TalendPass", "authUser": "[email protected]", "jvmParams": [ "-Xmx256m" , "-Xms64m" ], "contextParams": ["host_mysql_db01": "failed", "database_analytics": "testing.it"],"mode": "synchronous", "taskId": 43}'
Сообщение об ошибке:
{"error":"Expected a ',' or ']' at character 172","returnCode":2}
Я нашел еще одну проблему с переполнением стека Добавьте параметры контекста в задание Talend в Tac через API, не запуская его на самом деле., но он не говорит, как он ее передает, и я не могу ответить комментарием, спрашивающим, как он это сделал.
Настоящий вызов Talend API:
wget -O file http://localhost:8080/org.talend.administrator/metaServlet?$JSON_ENCODED
Могу ли я получить некоторую помощь?
На самом деле json, который вы передаете метасервлету, недействителен json. Вы можете проверить это с помощью онлайн-валидатора, такого как http://jsonlint.com.
Вы указываете атрибут contextParams
как массив, но этот синтаксис недействителен в json. Массив может содержать либо список значений (например, jvmParams
), либо объекты (которые сами могут содержать массивы). Вот пример.
Более того, согласно Справочник по талантам атрибут должен называться "context
" и должен быть объектом, а не массивом, например:
"context":{"varname1": "varvalue", "varname2": "varvalue2"}
Спасибо @iMezouar, у меня все заработало. Я нашел значение контекста в документации talend, но там не показано, как мы должны передавать параметры.