Sai A Sai A
Updated date Nov 07, 2023
In this blog, we will explore two simple methods to convert JSON data into YAML format using Python.
  • 1.1k
  • 0
  • 0

Introduction:

JSON (JavaScript Object Notation) and YAML (YAML Ain't Markup Language) are two popular formats for representing structured data. While JSON is commonly used in web applications and APIs, YAML is preferred for configuration files and human-readable data. Sometimes, you may need to convert JSON data into YAML to make it more user-friendly and easier to work with. In this blog, we will explore two methods to achieve this conversion in Python.

Method 1: Using the json and pyyaml Libraries

In this method, we will use the json library to load the JSON data and the pyyaml library to convert it into YAML format. Before you proceed, make sure you have the pyyaml library installed. If not, you can install it using pip:

pip install pyyaml

Now, let's write a Python program to convert JSON to YAML using this method:

import json
import yaml

# Sample JSON data
json_data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York"
}

# Convert JSON to YAML
yaml_data = yaml.dump(json_data, default_flow_style=False)

# Print the YAML data
print(yaml_data)

Output:

age: 30
city: New York
name: John Doe
  • We start by importing the necessary libraries: json for parsing JSON data and pyyaml for converting data to YAML format.

  • We define a sample JSON data structure in the json_data dictionary.

  • To convert JSON to YAML, we use the yaml.dump() function from the pyyaml library. The default_flow_style=False argument is used to ensure that the YAML output is well-formatted and human-readable.

  • Finally, we print the YAML data to the console.

Method 2: Using the json2yaml Library

Another convenient way to convert JSON to YAML is by using the json2yaml library. This library simplifies the conversion process, making it an excellent choice for beginners. To use it, you'll need to install the json2yaml library:

pip install json2yaml

Here's how to convert JSON to YAML using the json2yaml library:

from json2yaml import convert

# Sample JSON data
json_data = {
    "name": "Alice",
    "age": 25,
    "city": "Los Angeles"
}

# Convert JSON to YAML
yaml_data = convert(json_data)

# Print the YAML data
print(yaml_data)

Output:

name: Alice
age: 25
city: Los Angeles
  • First, we import the convert function from the json2yaml library, which simplifies the JSON to YAML conversion process.

  • We define a sample JSON data structure in the json_data dictionary.

  • To convert JSON to YAML, we call the convert() function with the JSON data as an argument. This function returns the YAML representation of the data.

  • Finally, we print the YAML data to the console.

Method 3: Handling Complex JSON Structures

In some cases, you might need to convert more complex JSON structures into YAML. The methods described above work for simple JSON objects, but you can adapt them to handle nested structures or arrays. Here's how you can handle complex JSON structures using Method 1:

import json
import yaml

# Complex JSON data
complex_json = {
    "person": {
        "name": "Jane Doe",
        "age": 35,
        "addresses": [
            {"city": "Paris", "street": "123 Rue de la Paix"},
            {"city": "Berlin", "street": "456 Friedrichstrasse"}
        ]
    }
}

# Convert JSON to YAML
yaml_data = yaml.dump(complex_json, default_flow_style=False)

# Print the YAML data
print(yaml_data)

Output:

person:
  age: 35
  addresses:
  - city: Paris
    street: 123 Rue de la Paix
  - city: Berlin
    street: 456 Friedrichstrasse
  name: Jane Doe

In this example, we have a more complex JSON structure with nested objects and an array. The yaml.dump() function handles this complexity and produces well-structured YAML output.

Conclusion:

In this blog, we have discussed two simple methods for converting JSON data to YAML format using Python. You can choose between the json and pyyaml libraries or the json2yaml library, depending on your preferences and requirements. 

Comments (0)

There are no comments. Be the first to comment!!!