Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to I stop jackson's YAML writer from quoting values

Tags:

java

yaml

jackson

I'm working on a project to convert files from JSON to YAML. I'm using the 2.8.3 versions of the following libraries:

  • jackson-core
  • jackson-databind
  • jackson-dataformat-yaml
  • jackson-annotations

My YAML serialization code is extremely simple:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
ObjectWriter writer = mapper.writer();

try {
    SequenceWriter sw = writer.writeValues(System.out);
    sw.write(tree);
}
catch (IOException e) {
    e.printStackTrace();
}

The YAML produced by this code looks like the following:

serviceType: "elasticSearch"
displayName: "Elasticsearch Service"
description: "Sample Elastic Search Service"

Although it is valid YAML, I don't like the double quotes around the values. You don't need them in YAML and it makes editing the resulting file more cumbersome. Does anyone know how to configure the ObjectWriter to make jackson stop encapsulating String values in quotes?

like image 629
gilbertpilz Avatar asked Sep 28 '16 20:09

gilbertpilz


1 Answers

There is a YAMLGenerator feature called MINIMIZE_QUOTES that will turn off the quotes.

You can enable() it when creating your YAMLFactory like so:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));
like image 145
azurefrog Avatar answered Sep 20 '22 04:09

azurefrog