2017-10-24 6 views
0

Betrachten Sie den folgenden Code ein:SnakeYAML Dump-Funktion schreibt mit einfachen Anführungszeichen

public void testDumpWriter() { 
Map<String, Object> data = new HashMap<String, Object>(); 
data.put("NAME1", "Raj"); 
data.put("NAME2", "Kumar"); 

Yaml yaml = new Yaml(); 
FileWriter writer = new FileWriter("/path/to/file.yaml"); 
for (Map.Entry m : data.entrySet()) { 
      String temp = new StringBuilder().append(m.getKey()).append(": ").append(m.getValue()).toString(); 
      yaml.dump(temp, file); 
     } 
} 

Die Ausgabe des obigen Codes ist

'NAME1: Raj' 
'NAME2: Kumar' 

Aber ich möchte die Ausgabe ohne die einfachen Anführungszeichen wie

NAME1: Raj 
NAME2: Kumar 

Dieses Ding ist sehr bequem zum Parsen der Datei. Wenn jemand Lösung haben, bitte helfen Sie mir zu beheben. Vielen Dank im Voraus

Antwort

1

Nun SnakeYaml tut genau das, was Sie ihm sagen: Für jeden Eintrag in der Karte, Dumps die Verkettung des Schlüssels, der String ": ", und der Wert als YAML-Dokument. Ein String wird in YAML einem Skalar zugeordnet. Da der Skalar einen : gefolgt von einem Leerzeichen enthält, muss er in Anführungszeichen gesetzt werden (andernfalls wäre es ein Schlüssel/Wert-Paar).

Was Sie tatsächlich tun möchten, ist die Karte als YAML-Mapping auszugeben. Sie können es wie folgt tun:

public void testDumpWriter() { 
    Map<String, Object> data = new HashMap<String, Object>(); 
    data.put("NAME1", "Raj"); 
    data.put("NAME2", "Kumar"); 

    DumperOptions options = new DumperOptions(); 
    options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); 
    Yaml yaml = new Yaml(options); 
    FileWriter writer = new FileWriter("/path/to/file.yaml"); 
    yaml.dump(data, writer); 
} 
+0

Danke, aber ich habe bereits versucht, Ihren Code, druckt er im csv-Format * {NAME1: Raj, NAME2: Kumar} *. Das aktuelle Yml-Format ist in meiner Frage erwähnt, und dieses Format ist angenehm zu analysieren. Und wenn wir zu viele Karten löschen, verstößt es gegen das XML-Format. Würdest du bitte für das aktuelle XML-Format helfen? –

+0

Das ist definitiv kein * csv * -Format, das ist etwas ganz anderes. Es ist gültig YAML, nur im Flow-Stil (der JSON ähnelte). Ich habe den Code aktualisiert, um den Blockstil zu erzwingen. – flyx

+0

Vielen Dank, seine große Hilfe für mein Problem. –

Verwandte Themen