У меня есть YAML файл, который выглядит следующим образом (с названиями бот и их параметрами):YAML в JSON Рубин
conf_file:
pipeline_conf_path: /opt/etc/pipeline.conf
runtime_conf_path: /opt/etc/runtime.conf
asn_lookup:
parameters:
database: /opt/var/lib/bots/asn_lookup/ipasnteste.dat
group: "Expert"
name: "ASN Lookup"
module: "one module"
description: "modified by "
modify:
parameters:
configuration_path: /opt/var/lib/bots/modify/modify.conf
group: "Expert"
name: "Modify"
module: "one module"
description: "modified"
filter:
parameters:
filter_action:
filter_key:
filter_regex:
filter_value:
group: "Expert"
name: "Filter"
module: "one module"
description: "modified"
И я хотел бы преобразовать каждый бот JSON. Например, для НВА-Lookup вывод должен быть чем-то вроде:
"asn-lookup": {
"parameters": {
"database": "/opt/var/lib/bots/asn_lookup/ipasnteste.dat"
},
"group": "Expert",
"name": "ASN Lookup",
"module": "one module",
"description": "modified by"
}
У меня уже есть следующий код:
def generate_asn_bot
config = YAML.load_file('my_conf.yaml')
asn = config["conf_file"]["asn_lookup"]
puts JSON.pretty_generate(asn)
end
и это дает следующий результат:
{
"parameters": {
"database": "/opt/intelmq/var/lib/bots/asn_lookup/ipasnteste.dat"
},
"group": "Expert",
"name": "ASN Lookup",
"module": "intelmq.bots.experts.asn_lookup.expert",
"description": "modified by mfelix"
}
Но у него отсутствует имя бота. Поэтому я добавил следующую строку кода:
final = asn['name'] = '"asn-lookup"' + ': ' + asn.to_json
И использовать JSON.pretty_generate(final)
, но это не работает, выбрасывая ошибку:
only generation of JSON objects or arrays allowed (JSON::GeneratorError)
Что является лучшим способом для преобразования каждого бота в JSON и добавить имя бота в начале его?
Почему вы не просто создать структуру, которую вы хотите сбросить (сделав отображение с помощью клавиши «АСН-поиск"»и значения' asn', а затем сбросить эту структуру вместо жонглирования строкового представления 'asn'? Получаете ли вы сообщение об ошибке? Если да, то что это такое? Почему это не работает? – Anthon
Это очень хорошая идея! Спасибо. Ошибка, которую я получаю, - это всего лишь создание объектов или массивов JSON (JSON :: GeneratorError) ", но это потому, что переменная" final "является строкой. У меня не хватало идей, чтобы решить эту проблему, спасибо за ваше предложение @Anthon – mf370
Если бы я знал любой синтаксис ruby, я бы положите его в ответ ;-). Если вы узнаете, вы можете самостоятельно ответить на свой пост и принять ответ – Anthon