Ich habe eine YAML-Datei, die (mit Bot-Namen und deren Parameter) wie folgt aussieht:YAML zu JSON Rubin
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"
Und ich möchte jeden Bot JSON konvertieren. Zum Beispiel für die asn-Lookup der Ausgabe sollte wie etwas sein:
"asn-lookup": {
"parameters": {
"database": "/opt/var/lib/bots/asn_lookup/ipasnteste.dat"
},
"group": "Expert",
"name": "ASN Lookup",
"module": "one module",
"description": "modified by"
}
Ich habe bereits den folgenden Code:
def generate_asn_bot
config = YAML.load_file('my_conf.yaml')
asn = config["conf_file"]["asn_lookup"]
puts JSON.pretty_generate(asn)
end
und es gibt die folgende Ausgabe:
{
"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"
}
Aber Es fehlt der Bot-Name. So habe ich die folgende Zeile in dem Code:
final = asn['name'] = '"asn-lookup"' + ': ' + asn.to_json
Und verwenden JSON.pretty_generate(final)
aber es funktioniert nicht, den Fehler zu werfen:
only generation of JSON objects or arrays allowed (JSON::GeneratorError)
was der beste Weg ist, jeden Bot in JSON zu konvertieren und fügen Bot-Name am Anfang davon?
Warum Sie nicht nur die Struktur erstellen, die Sie (indem eine Zuordnung mit dem Schlüssel ‚‚asn-Lookup‘‘ und den Wert 'asn' dump wollen und dann diese Struktur Dump statt Jonglieren String-Darstellung 'asn'? Erhalten Sie eine Fehlermeldung? Wenn ja was ist das? Warum funktioniert das nicht? – Anthon
Das ist eine sehr gute Idee! Danke. Der Fehler, den ich bekomme, ist" nur die Generierung von JSON-Objekten oder Arrays erlaubt (JSON :: GeneratorError) "aber es ist, weil die Variable" final "eine Zeichenkette ist. Ich hatte keine Ideen mehr, um dies zu lösen, danke für Ihren Vorschlag @Anthon – mf370
Wenn ich irgendeine Ruby-Syntax würde ich wissen gib es in eine Antwort ;-). Wenn Sie es herausfinden, können Sie Ihren Beitrag selbst beantworten und die Antwort akzeptieren – Anthon