JSON Transformer

Transform JSON data using mapping rules and transformations

python (3.9) 2025-11-12 json transformation data-processing mapping

Description

A utility for transforming JSON data structures using mapping rules. Supports field renaming, value transformation, nested object handling, and conditional transformations.

Features

  • Field mapping and renaming
  • Value transformations
  • Nested object handling
  • Conditional transformations

Code

RAW
import jsonfrom typing import Dict, Any, Callable, Optionalclass JSONTransformer:    def __init__(self, mappings: Dict[str, str] = None, transformers: Dict[str, Callable] = None):        self.mappings = mappings or {}        self.transformers = transformers or {}        def transform(self, data: Dict[str, Any]) -> Dict[str, Any]:        """Transform data according to mappings and transformers."""        result = {}                for key, value in data.items():            # Apply field mapping            new_key = self.mappings.get(key, key)                        # Apply value transformer if exists            if new_key in self.transformers:                value = self.transformers[new_key](value)            elif key in self.transformers:                value = self.transformers[key](value)                        # Handle nested objects            if isinstance(value, dict):                value = self.transform(value)            elif isinstance(value, list):                value = [self.transform(item) if isinstance(item, dict) else item for item in value]                        result[new_key] = value                return result        def transform_from_json(self, json_str: str) -> Dict[str, Any]:        """Transform from JSON string."""        data = json.loads(json_str)        return self.transform(data)        def transform_to_json(self, data: Dict[str, Any]) -> str:        """Transform and return as JSON string."""        transformed = self.transform(data)        return json.dumps(transformed, indent=2)
RAW
from json_transformer import JSONTransformerimport jsonmappings = {"firstName": "first_name", "lastName": "last_name"}transformers = {    'age': lambda x: x + 1,    'name': str.upper}transformer = JSONTransformer(mappings=mappings, transformers=transformers)data = {"age": 30, "lastName": "Doe", "firstName": "John"}transformed = transformer.transform(data)print(json.dumps(transformed, indent=2))

Comments

No comments yet. Be the first to comment!