2016-07-19 14 views
1

ich eine YAML-Datei haben wie dieseYamlLint Validierung

name: hhh_aaa_bbb 
arguments: 
    - !argument 
     name: inputsss 
     description: hhh aaa bbb 
     required: true 
    - !argument 
     name: lll 
     description: lll 
     required: true 
    - !argument 
     name: ccc 
     description: ccc 
     required: true 
source: 
    !!com.abc.bbc.sss 
     uri: !arg input 

Aber wenn ich Yaml Lint verwenden diese yaml Datei in yamllint zu validieren, entfernt es alle „!“ oder "!!" Benutzerargumente. Warum passiert das?

Dies ist die Ausgabe i von yaml Flusen ohne Aufdruck oder andere Informationen über den Autor

--- 
arguments: 
    - 
    description: "hhh aaa bbb" 
    name: inputsss 
    required: true 
    - 
    description: lll 
    name: lll 
    required: true 
    - 
    description: ccc 
    name: ccc 
    required: true 
name: hhh_aaa_bbb 
source: 
    uri: input 
+0

Ihr Beispiel ist keine gültige YAML-Datei, Ihr Top-Level-Mapping beginnt mit einer 4 Raum Einbuchtung (vor 'name') und in der zweiten Zeile Sie haben null Einrückung. Wenn yamllint das akzeptiert, sollten Sie weit davon entfernt sein, es zu benutzen. – Anthon

+0

Hey @Anthon Alle Yaml Validatoren, die mir bekannt sind, akzeptieren diese Datei. Ich meine alle drei (YPaste, Online YAML Parser, NimYaml). Gibt es eine andere geeignete Online-Ressource, die das richtige YAML-Format diktiert? – bks4line

+0

yamllint reduziert Ihre Eingabe auf ein einzelnes Schlüssel/Wert-Paar, ebenso der Online YAML Parser. NimYaml akzeptiert die eingefügten Daten, als ob die erste Zeile nicht eingerückt wäre, so dass der Parser nicht vertrauenswürdig ist. Alle drei sollten einen Fehler geben. Sie sind viel besser dran mit einem kleinen Python-Programm versuchen, die YAML zu laden, Online-Parser von Daten sind ein Sicherheitsrisiko. – Anthon

Antwort

0

YAMLLint eine Website nach der Validierung erhalten ist, Zweck und YAML-Implementierung verwendet. Ohne diese Informationen sollten Sie äußerst vorsichtig sein, seiner Ausgabe zu vertrauen.

Nur der Autor kann Ihnen sagen, warum sie denken, dass es eine gute Idee ist, die Tags zu löschen. Die resultierende YAML ist nicht entspricht der Eingabe ohne die Tags.

Es gibt auch andere Websites für Online-YAML Validierung verwenden können:

(Full Disclosure: ich bin der Autor des NimYAML)

+0

Hallo Vielen Dank für diese Information. Ich habe noch einige Zweifel. Ich möchte ein YAML mit Tags in eine JSON-Datei und ein JSON in ein YAML-Feld mit Tags konvertieren. Kannst du mir sagen, was sind Tags wie in einem JSON-Konstrukt? – bks4line

+0

Wie zum Beispiel habe ich Ihre NIMYAML verwendet, um die gleiche YAML-Datei zu konvertieren, die in der Frage bereitgestellt wird, um sie in ein JSON zu konvertieren. Ich habe eine JSON-Ausgabe bekommen, die die Tags ausgeschlossen hat. Ich weiß nicht, wie man den Kommentaren Code hinzufügt. Aber du kannst es mit meinem Yam versuchen. Meine Anforderung besteht darin, eine JSON-Datei in eine YAML-Datei mit Tags umzuwandeln. Ich benutze SnakeYAML ab sofort. Und ich benutze Javascript, um den JSON zu Yaml umzuwandeln. aber ich bekomme die Tags nicht. Wie bekomme ich diese Tags von JSON zu YAML? – bks4line

+0

Wenn Sie JSON in YAML konvertieren, sind die einzigen Tags, die Sie automatisch generieren können, diejenigen aus dem [JSON-Schema] (http://www.yaml.org/spec/1.2/spec.html#schema/JSON/): '! ! null', '!! bool',' !! int', '!! float',' !! map', '!! seq' und' !!string ', entsprechend den JSON-Typen (' !! int' und '!! float' werden beide auf eine JSON * -Nummer * abgebildet). Fügen Sie JSON in das Online-Tool NimYAML ein und betrachten Sie die kanonische Ausgabe (dies funktioniert, weil YAML eine Obermenge von JSON ist). Wenn Sie ein bestimmtes Problem haben, stellen Sie bitte eine neue Frage. – flyx

0

Wenn Sie validieren möchten eine YAML-Datei ohne es transformiert haben, verwenden Sie yamllint (der Linter, nicht die Website - yamlint.com ist kein Linter).

Für Ihre spezifische Eingabe, es würde:

$ yamllint file.yaml 
file.yaml 
    1:1  warning missing document start "---" (document-start) 
    1:18  error trailing spaces (trailing-spaces) 
    4:9  error wrong indentation: expected 6 but found 8 (indentation) 
    8:9  error wrong indentation: expected 6 but found 8 (indentation) 
    12:9  error wrong indentation: expected 6 but found 8 (indentation) 
    17:9  error wrong indentation: expected 4 but found 8 (indentation)