2017-10-24 10 views
0

다음 코드를 고려 따옴표로 기록 :SnakeYaml 덤프 기능은

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); 
     } 
} 

위의 코드의 출력은

'NAME1: Raj' 
'NAME2: Kumar' 

입니다하지만 난

NAME1: Raj 
NAME2: Kumar 
같은 작은 따옴표없이 출력을 원하는

이 것은 파일 구문 분석에 매우 편리합니다. 해결책이있는 사람은 해결하도록 도와주세요. 미리 감사드립니다.

답변

1

글쎄 SnakeYaml은지도에있는 각 항목에 대해 키의 연결 인 문자열 ": "과 YAML 문서의 값을 덤프합니다. 문자열은 YAML에서 스칼라에 매핑되며 스칼라에는 :이 포함되어 있으므로 공백이 있어야하므로 따옴표로 묶어야합니다 (그렇지 않으면 키 - 값 쌍이됩니다).

무엇을 실제로하고 싶은지도를 YAML 매핑으로 덤프하는 것입니다. 당신은 이런 식으로 작업을 수행 할 수 있습니다 {: 주권, NAME2 : 쿠마 NAME1} *

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

감사합니다,하지만 난 이미 당신의 코드를 시도, 그것은 CSV 형식 *에 인쇄합니다. 실제 yml 형식은 내 질문에 언급이며 형식은 구문 분석하기가 편합니다. 너무 많은지도를 덤프하면 yml 형식을 위반합니다. 실제 yml 형식에 도움을 주시겠습니까? –

+0

이것은 분명히 * csv * 형식이 아닙니다. 이것은 완전히 다른 것입니다. 유동 YAML이며, JSON과 비슷하게 디자인되었습니다. 내가 원하는 블록 스타일을 적용하도록 코드를 업데이트했습니다. – flyx

+0

내 문제에 대한 큰 도움을 주셔서 대단히 감사합니다. –