Лучший способ сериализации списка Java объектов в yaml с двумя разрывами строк, разделяющими каждый сгенерированный узел объекта верхнего уровня - PullRequest
2 голосов
/ 23 января 2020

В настоящее время я могу преобразовать список Java объектов в строку yaml следующим образом:

private static final ObjectMapper YAML_MAPPER = new ObjectMapper(new YAMLFactory());
private static final ObjectWriter YAML_WRITER = YAML_MAPPER.writer();

public static String toYamlString(Object value) throws JsonProcessingException {
    String s = YAML_WRITER.writeValueAsString(value);
}

Это генерирует действительный yaml, но генерирует yaml как

---
- dogs: "dalmatians"
  items:
  - "rover"
  - "spot"
  - "sir barksalot"
  hungry: true
- instruction: "fetch bone"
  condition: "bone is thrown"
  response: "retrieve bone"

Вместо этого я хотел бы создать yaml, как показано ниже, с дополнительным переводом строк и разделением собак и инструкций:

---
- dogs: "dalmatians"
  items:
  - "rover"
  - "spot"
  - "sir barksalot"
  hungry: true

- instruction: "fetch bone"
  condition: "bone is thrown"
  response: "retrieve bone"

В настоящее время я использую Джексона, но ни одна из функций сериализации, похоже, не связана с этой функцией. Я открыт для использования другой библиотеки, но это должно быть Java.

Я попытался использовать MinimalPrettyPrinter, как показано ниже, но он не работает

    public static String toYamlString(Object value) throws JsonProcessingException {
        String s = YAML_WRITER.with(new MinimalPrettyPrinter() {

            @Override
            public void writeEndObject(JsonGenerator g, int nrOfEntries) throws IOException
            {
                g.writeRaw('}');
                g.writeRaw('\n');
            }
        }).writeValueAsString(value);
        return s;
    }

Что бы быть хорошим способом для достижения этой цели?

...