Skip to main content

A utility package to convert JSON data to multiple formats like XML, Markdown, CSV, etc.

Project description

Json_To_Many

PyPI Version License Build Status

Overview

In today's interconnected digital ecosystem, JSON has become the lingua franca of data exchange. From REST APIs to configuration files, from database exports to IoT sensor data, JSON is everywhere. However, while JSON excels at machine-to-machine communication, different tools, platforms, and use cases often require data in specific formats.

Json_To_Many bridges this gap by providing seamless conversion from JSON to multiple output formats. Whether you're a developer documenting an API, a data analyst preparing reports, or a content creator transforming data for different platforms, this package eliminates the friction of manual format conversion.

The Problem We Solve

  • Developers need to transform API responses for documentation (Markdown)
  • Data analysts require CSV exports for spreadsheet analysis
  • DevOps teams need XML for legacy system integration
  • Content creators want structured data in readable formats
  • Business users need reports generated from JSON APIs

Json_To_Many makes these transformations effortless, allowing you to focus on what matters most: your data and insights.

The project is managed using uv for dependency management and packaging, and Ruff is used for linting to ensure code quality.

Features

Current Supported Formats

  • JSON to Markdown
  • JSON to XML
  • JSON to CSV

Upcoming Supported Formats

  • JSON to TSV
  • JSON to SQL
  • JSON to YAML
  • JSON to HTML
  • JSON to PDF

Table of Contents

Installation

Install Json_To_Many using pip:

pip install json_to_many

Or, if you prefer using uv:

uv add json_to_many

Quick Start

from json_to_many import convert

# Convert JSON string to Markdown and save to 'output.md'
json_string = '{"title": "Sample Document", "content": "This is a sample."}'
convert(json_string, 'markdown', output_file='output.md')

# Convert JSON file to XML and get the converted data
xml_data = convert('data.json', 'xml', return_data=True)
print(xml_data)

Usage

Converting JSON to Markdown

From a JSON File:

from json_to_many import convert

# Convert JSON file to Markdown and save to 'output.md'
convert('data.json', 'markdown', output_file='output.md')

From a JSON String:

from json_to_many import convert

json_string = '{"title": "Sample Document", "content": "This is a sample."}'

# Convert JSON string to Markdown and get the converted data
markdown_data = convert(json_string, 'markdown', return_data=True)
print(markdown_data)

Sample Output:

# title

Sample Document

# content

This is a sample.

Converting JSON to XML

From a Python Dictionary:

from json_to_many import convert

json_data = {
    "note": {
        "to": "Alice",
        "from": "Bob",
        "message": "Hello, Alice!"
    }
}

# Convert JSON data to XML and save to 'note.xml'
convert(json_data, 'xml', output_file='note.xml')

Get Converted XML Data Without Saving:

xml_data = convert(json_data, 'xml', return_data=True)
print(xml_data)

Sample Output:

<root><note><to>Alice</to><from>Bob</from><message>Hello, Alice!</message></note></root>

Converting JSON to CSV

From a Python List of Dictionaries:

from json_to_many import convert

json_data = [
    {"name": "Alice", "age": 30, "city": "New York"},
    {"name": "Bob", "age": 25, "city": "Los Angeles"}
]

# Convert JSON data to CSV and save to 'data.csv'
convert(json_data, 'csv', output_file='data.csv')

Get Converted CSV Data Without Saving:

csv_data = convert(json_data, 'csv', return_data=True)
print(csv_data)

Sample Output:

name,age,city
Alice,30,New York
Bob,25,Los Angeles

Note: The CSV converter automatically flattens nested JSON structures and handles complex data types appropriately.

Examples

The examples directory contains sample scripts and data to help you get started.

Running Examples

  1. Clone the Repository:

    git clone https://github.com/ananthanandanan/Json_To_Many.git
    cd Json_To_Many/examples
    
  2. Install Dependencies (for development):

    uv sync
    

    Or install the package directly:

    pip install json_to_many
    
  3. Run an Example Script:

    uv run python json_to_markdown_example.py
    # or if installed globally:
    python json_to_markdown_example.py
    

Development

The project uses uv for dependency management and packaging, and Ruff for linting and code style enforcement.

Setting Up a Development Environment

  1. Fork the Repository:

    Click the "Fork" button at the top right corner of the repository page.

  2. Clone Your Fork:

    git clone https://github.com/ananthanandanan/Json_To_Many.git
    cd Json_To_Many
    
  3. Install Dependencies:

    uv sync
    
  4. Run Tests:

    uv run pytest
    
  5. Check Code Quality with Ruff:

    uv run ruff check .
    
  6. Build the Package:

    uv build
    

Coding Guidelines

  • Code Style: Follow PEP 8 guidelines. Use Ruff for linting and code style enforcement.
  • Testing: Write unit tests for new features and bug fixes.
  • Documentation: Update documentation and examples to reflect changes.

Contributing

Contributions are welcome! Here's how you can help:

  • Report Bugs: If you find a bug, please report it by opening an issue.
  • Suggest Features: Have an idea for a new feature? Feel free to share it.
  • Submit Pull Requests: If you'd like to fix a bug or implement a feature, you're welcome to contribute code.

Guidelines for Contributing

  1. Create an Issue:

    Before starting work on a feature or bug fix, please create an issue to discuss it.

  2. Branch Naming:

    Use descriptive branch names, e.g., feature/json-to-yaml or bugfix/fix-xml-output.

  3. Pull Requests:

    • Include a clear description of the changes.
    • Reference the issue number.
    • Ensure all tests pass and code quality checks are successful.
  4. Code Quality:

    • Run uv run pytest to ensure all tests pass.
    • Run uv run ruff check . to ensure code style compliance.

For detailed technical specifications, implementation timelines, and architecture diagrams, see our comprehensive ROADMAP.md.

Want to contribute to this roadmap? Check out our Contributing guidelines or open an issue to discuss new ideas!

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

For questions or support, please open an issue or contact K N Anantha nandanan.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

json_to_many-0.1.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

json_to_many-0.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file json_to_many-0.1.0.tar.gz.

File metadata

  • Download URL: json_to_many-0.1.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.4

File hashes

Hashes for json_to_many-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c268a4a24af8f6e1ddf544e4762cb3947076e66b765ce077dab2904ec1f7a37f
MD5 7984f7bbc31a715f3ae4084fdfb934e6
BLAKE2b-256 54fccac8a7cd39577ccf84f4bcf7894c87b8538d65c8f00d406823aed9ff5aa2

See more details on using hashes here.

File details

Details for the file json_to_many-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for json_to_many-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 799bf0c71673d38318af3d05926c99cdf483a8df4f73197af777927defa24455
MD5 8b354f4e0c047c6f0e95e26d343eecaf
BLAKE2b-256 d295c2f77cf6f3ee65b16c4361fb2761a21ce92ccaa73c9c19ce62445acb98f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page