Convert JSON to YAML in Java [Complete Guide]

Convert JSON to YAML in Java using Jackson or SnakeYAML libraries. The easiest approach is Jackson with jackson-dataformat-yaml: parse JSON with ObjectMapper, then write YAML with YAMLMapper. Need help choosing between these formats? See our YAML vs JSON comparison. This guide covers both libraries with complete code examples for Java JSON to YAML conversion.

Method 1: Using Jackson (Recommended)

Jackson is the most popular JSON library for Java and supports YAML through the jackson-dataformat-yaml module. It's the recommended approach for most Java projects, especially those using Spring Boot. Prefer a different language? See our Python, JavaScript, or Go guides.

Step 1: Add Maven Dependencies

<!-- pom.xml -->
<dependencies>
    <!-- Jackson Core -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.16.1</version>
    </dependency>
    
    <!-- Jackson YAML Support -->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>2.16.1</version>
    </dependency>
</dependencies>

Step 2: Convert JSON to YAML

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;

public class JsonToYamlConverter {
    
    public static String convertJsonToYaml(String jsonString) throws Exception {
        // Parse JSON
        ObjectMapper jsonMapper = new ObjectMapper();
        Object jsonObject = jsonMapper.readValue(jsonString, Object.class);
        
        // Convert to YAML
        YAMLMapper yamlMapper = new YAMLMapper();
        return yamlMapper.writeValueAsString(jsonObject);
    }
    
    public static void main(String[] args) throws Exception {
        String json = """
            {
                "name": "My App",
                "version": "1.0.0",
                "database": {
                    "host": "localhost",
                    "port": 5432
                }
            }
            """;
        
        String yaml = convertJsonToYaml(json);
        System.out.println(yaml);
    }
}

Output:

---
name: "My App"
version: "1.0.0"
database:
  host: "localhost"
  port: 5432
Tip: Use YAMLMapper.builder().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER).build() to remove the --- document start marker. Learn more about YAML vs JSON for configuration files.

Method 2: Using SnakeYAML

SnakeYAML is a lightweight YAML library. Use it with a JSON library like Gson or org.json for JSON to YAML conversion.

Maven Dependencies

<dependencies>
    <!-- SnakeYAML -->
    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>2.2</version>
    </dependency>
    
    <!-- Gson for JSON parsing -->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.10.1</version>
    </dependency>
</dependencies>

Convert JSON to YAML with SnakeYAML

import com.google.gson.Gson;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.util.Map;

public class JsonToYamlSnakeYAML {
    
    public static String convertJsonToYaml(String jsonString) {
        // Parse JSON with Gson
        Gson gson = new Gson();
        Map<String, Object> data = gson.fromJson(jsonString, Map.class);
        
        // Configure YAML output
        DumperOptions options = new DumperOptions();
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
        options.setPrettyFlow(true);
        options.setIndent(2);
        
        // Convert to YAML
        Yaml yaml = new Yaml(options);
        return yaml.dump(data);
    }
    
    public static void main(String[] args) {
        String json = "{\"name\":\"Test\",\"enabled\":true,\"count\":42}";
        String yaml = convertJsonToYaml(json);
        System.out.println(yaml);
    }
}

Convert YAML to JSON in Java

Reverse the process to convert YAML to JSON in Java:

Jackson: YAML to JSON

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;

public class YamlToJsonConverter {
    
    public static String convertYamlToJson(String yamlString) throws Exception {
        // Parse YAML
        YAMLMapper yamlMapper = new YAMLMapper();
        Object yamlObject = yamlMapper.readValue(yamlString, Object.class);
        
        // Convert to JSON
        ObjectMapper jsonMapper = new ObjectMapper();
        return jsonMapper.writerWithDefaultPrettyPrinter()
                         .writeValueAsString(yamlObject);
    }
}

SnakeYAML: YAML to JSON

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.yaml.snakeyaml.Yaml;
import java.util.Map;

public class YamlToJsonSnakeYAML {
    
    public static String convertYamlToJson(String yamlString) {
        // Parse YAML
        Yaml yaml = new Yaml();
        Map<String, Object> data = yaml.load(yamlString);
        
        // Convert to JSON
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(data);
    }
}

Spring Boot Integration

Spring Boot uses Jackson by default. Add the YAML dependency and create a converter service. For quick conversions without writing Java code, try our online JSON to YAML converter.

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
import org.springframework.stereotype.Service;

@Service
public class ConversionService {
    
    private final ObjectMapper jsonMapper;
    private final YAMLMapper yamlMapper;
    
    public ConversionService() {
        this.jsonMapper = new ObjectMapper();
        this.yamlMapper = new YAMLMapper();
    }
    
    public String jsonToYaml(String json) throws Exception {
        Object data = jsonMapper.readValue(json, Object.class);
        return yamlMapper.writeValueAsString(data);
    }
    
    public String yamlToJson(String yaml) throws Exception {
        Object data = yamlMapper.readValue(yaml, Object.class);
        return jsonMapper.writerWithDefaultPrettyPrinter()
                         .writeValueAsString(data);
    }
}

Jackson vs SnakeYAML Comparison

Feature Jackson SnakeYAML
JSON + YAML in one library ✅ Yes ❌ Needs Gson/org.json
POJO serialization ✅ Excellent ✅ Good
Spring Boot support ✅ Native Requires config
Library size Larger ✅ Smaller
YAML 1.2 support ✅ Yes ✅ Yes
Best for Enterprise apps Simple conversions

Error Handling

Always wrap conversion in try-catch blocks:

public String safeJsonToYaml(String json) {
    try {
        ObjectMapper jsonMapper = new ObjectMapper();
        YAMLMapper yamlMapper = new YAMLMapper();
        Object data = jsonMapper.readValue(json, Object.class);
        return yamlMapper.writeValueAsString(data);
    } catch (JsonProcessingException e) {
        throw new IllegalArgumentException("Invalid JSON: " + e.getMessage(), e);
    } catch (Exception e) {
        throw new RuntimeException("Conversion failed: " + e.getMessage(), e);
    }
}

Frequently Asked Questions

Which Java library should I use for JSON to YAML conversion?

Jackson with jackson-dataformat-yaml is recommended for most projects. It's well-maintained, integrates with Spring Boot, and handles complex objects. SnakeYAML is a good lightweight alternative if you only need basic YAML support.

How do I convert JSON to YAML in Java with Jackson?

Use ObjectMapper to parse JSON, then YAMLMapper to write YAML: Object data = new ObjectMapper().readValue(json, Object.class); String yaml = new YAMLMapper().writeValueAsString(data);

Can I convert YAML to JSON in Java?

Yes, reverse the process: use YAMLMapper to read YAML, then ObjectMapper to write JSON. Both Jackson and SnakeYAML support bidirectional conversion between JSON and YAML formats.

Does Spring Boot support JSON to YAML conversion?

Yes, Spring Boot uses Jackson by default. Add jackson-dataformat-yaml dependency and use @Autowired ObjectMapper for JSON, or create a YAMLMapper bean for YAML conversions in your Spring application.

Need to convert JSON to YAML quickly?

Use our free online converter—no Java code required.

Open Converter Tool →