Close Menu
    Facebook LinkedIn YouTube WhatsApp X (Twitter) Pinterest
    Trending
    • Americans worry sports betting hurts integrity even as participation keeps rising
    • Best Home Ellipticals in 2026: Smash Your Health Goals With These Full-Body Workout Machines
    • From Vietnam Boat Refugee to Reliability Engineering
    • Does Calendar-Based Time-Intelligence Change Custom Logic?
    • The UK government is backing AI that can run its own lab experiments
    • Easy small scale honey harvesting for beekeepers
    • German BioTech Exciva lands €51 million to advance Alzheimer’s drug testing in patients
    • He Went to Prison for Gene-Editing Babies. Now He’s Planning to Do It Again
    Facebook LinkedIn WhatsApp
    Times FeaturedTimes Featured
    Tuesday, January 20
    • Home
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    • More
      • AI
      • Robotics
      • Industries
      • Global
    Times FeaturedTimes Featured
    Home»Artificial Intelligence»Stop Writing Spaghetti if-else Chains: Parsing JSON with Python’s match-case
    Artificial Intelligence

    Stop Writing Spaghetti if-else Chains: Parsing JSON with Python’s match-case

    Editor Times FeaturedBy Editor Times FeaturedDecember 14, 2025No Comments7 Mins Read
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr WhatsApp Email
    Share
    Facebook Twitter LinkedIn Pinterest Telegram Email WhatsApp Copy Link


    For those who work in knowledge science, knowledge engineering, or as as a frontend/backend developer, you cope with JSON. For professionals, its principally solely dying, taxes, and JSON-parsing that’s inevitable. The difficulty is that parsing JSON is usually a severe ache.

    Whether or not you’re pulling knowledge from a REST API, parsing logs, or studying configuration information, you finally find yourself with a nested dictionary that it’s essential unravel. And let’s be sincere: the code we write to deal with these dictionaries is usually…ugly to say the least.

    We’ve all written the “Spaghetti Parser.” You recognize the one. It begins with a easy if assertion, however then it’s essential examine if a key exists. Then it’s essential examine if the listing inside that key’s empty. Then it’s essential deal with an error state.

    Earlier than you understand it, you’ve gotten a 40-line tower of if-elif-else statements that’s troublesome to learn and even more durable to take care of. Pipelines will find yourself breaking as a consequence of some unexpected edge case. Dangerous vibes throughout!

    In Python 3.10 that got here out just a few years in the past, a characteristic was launched that many knowledge scientists nonetheless haven’t adopted: Structural Sample Matching with match and case. It’s typically mistaken for a easy “Swap” assertion (like in C or Java), however it’s far more highly effective. It lets you examine the form and construction of your knowledge, fairly than simply its worth.

    On this article, we’ll have a look at methods to change your fragile dictionary checks with elegant, readable patterns through the use of match and case. I’ll concentrate on a selected use-case that many people are acquainted with, fairly than attempting to provide a comprehension overview of how one can work with match and case.


    The State of affairs: The “Thriller” API Response

    Let’s think about a typical state of affairs. You’re polling an exterior API that you simply don’t have full management over. Let’s say, to make the setting concrete, that the API returns the standing of an information processing job in a JSON-format. The API is a bit inconsistent (as they typically are).

    It would return a Success response:

    {
        "standing": 200,
        "knowledge": {
            "job_id": 101,
            "outcome": ["file_a.csv", "file_b.csv"]
        }
    }

    Or an Error response:

    {
        "standing": 500,
        "error": "Timeout",
        "retry_after": 30
    }

    Or perhaps a bizarre legacy response that’s only a listing of IDs (as a result of the API documentation lied to you):

    [101, 102, 103]

    The Outdated Method: The if-else Pyramid of Doom

    For those who had been penning this utilizing customary Python management circulation, you’d possible find yourself with defensive coding that appears like this:

    def process_response(response):
        # State of affairs 1: Normal Dictionary Response
        if isinstance(response, dict):
            standing = response.get("standing")
            
            if standing == 200:
                # We have now to watch out that 'knowledge' truly exists
                knowledge = response.get("knowledge", {})
                outcomes = knowledge.get("outcome", [])
                print(f"Success! Processed {len(outcomes)} information.")
                return outcomes
            
            elif standing == 500:
                error_msg = response.get("error", "Unknown Error")
                print(f"Failed with error: {error_msg}")
                return None
            
            else:
                print("Unknown standing code acquired.")
                return None
    
        # State of affairs 2: The Legacy Listing Response
        elif isinstance(response, listing):
            print(f"Acquired legacy listing with {len(response)} jobs.")
            return response
        
        # State of affairs 3: Rubbish Information
        else:
            print("Invalid response format.")
            return None

    Why does the code above harm my soul?

    • It mixes “What” with “How”: You’re mixing enterprise logic (“Success means standing 200”) with sort checking instruments like isinstance() and .get().
    • It’s Verbose: We spend half the code simply verifying that keys exist to keep away from a KeyError.
    • Arduous to Scan: To grasp what constitutes a “Success,” you must mentally parse a number of nested indentation ranges.

    A Higher Method: Structural Sample Matching

    Enter the match and case key phrases.

    As a substitute of asking questions like “Is that this a dictionary? Does it have a key known as standing? Is that key 200?”, we will merely describe the form of the information we wish to deal with. Python makes an attempt to suit the information into that form.

    Right here is the very same logic rewritten with match and case:

    def process_response_modern(response):
        match response:
            # Case 1: Success (Matches particular keys AND values)
            case {"standing": 200, "knowledge": {"outcome": outcomes}}:
                print(f"Success! Processed {len(outcomes)} information.")
                return outcomes
    
            # Case 2: Error (Captures the error message and retry time)
            case {"standing": 500, "error": msg, "retry_after": time}:
                print(f"Failed: {msg}. Retrying in {time}s...")
                return None
    
            # Case 3: Legacy Listing (Matches any listing of integers)
            case [first, *rest]:
                print(f"Acquired legacy listing beginning with ID: {first}")
                return response
    
            # Case 4: Catch-all (The 'else' equal)
            case _:
                print("Invalid response format.")
                return None

    Discover that it’s a few strains shorter, however that is hardly the one benefit.

    Why Structural Sample Matching Is Superior

    I can give you not less than three the explanation why structural sample matching with match and case improves the state of affairs above.

    1. Implicit Variable Unpacking

    Discover what occurred in Case 1:

    case {"standing": 200, "knowledge": {"outcome": outcomes}}:

    We didn’t simply examine for the keys. We concurrently checked that standing is 200 AND extracted the worth of outcome right into a variable named outcomes.

    We changed knowledge = response.get("knowledge").get("outcome") with a easy variable placement. If the construction doesn’t match (e.g., outcome is lacking), this case is just skipped. No KeyError, no crashes.

    2. Sample “Wildcards”

    In Case 2, we used msg and time as placeholders:

    case {"standing": 500, "error": msg, "retry_after": time}:

    This tells Python: I anticipate a dictionary with standing 500, and some worth akin to the keys "error" and "retry_after". No matter these values are, bind them to the variables msg and time so I can use them instantly.

    3. Listing Destructuring

    In Case 3, we dealt with the listing response:

    case [first, *rest]:

    This sample matches any listing that has not less than one aspect. It binds the primary aspect to first and the remainder of the listing to relaxation. That is extremely helpful for recursive algorithms or for processing queues.


    Including “Guards” for Additional Management

    Typically, matching the construction isn’t sufficient. You wish to match a construction provided that a selected situation is met. You are able to do this by including an if clause on to the case.

    Think about we solely wish to course of the legacy listing if it incorporates fewer than 10 gadgets.

    case [first, *rest] if len(relaxation) < 9:
            print(f"Processing small batch beginning with {first}")

    If the listing is just too lengthy, this case falls via, and the code strikes to the subsequent case (or the catch-all _).

    Conclusion

    I’m not suggesting you change each easy if assertion with a match block. Nonetheless, it is best to strongly think about using match and case if you end up:

    1. Parsing API Responses: As proven above, that is the killer use case.
    2. Dealing with Polymorphic Information: When a perform may obtain a int, a str, or a dict and must behave in another way for every.
    3. Traversing ASTs or JSON Bushes: In case you are writing scripts to scrape or clear messy net knowledge.

    As knowledge professionals, our job is usually 80% cleansing knowledge and 20% modeling. Something that makes the cleansing part much less error-prone and extra readable is an enormous win for productiveness.

    Contemplate ditching the if-else spaghetti. Let the match and case instruments do the heavy lifting as an alternative.

    In case you are all for AI, knowledge science, or knowledge engineering, please observe me or join on LinkedIn.



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Editor Times Featured
    • Website

    Related Posts

    Does Calendar-Based Time-Intelligence Change Custom Logic?

    January 20, 2026

    IVO’s $55M Boost Signals AI-Driven Law Future (and It’s Just Getting Started)

    January 20, 2026

    You Probably Don’t Need a Vector Database for Your RAG — Yet

    January 20, 2026

    Time Series Isn’t Enough: How Graph Neural Networks Change Demand Forecasting

    January 19, 2026

    Bridging the Gap Between Research and Readability with Marco Hening Tallarico

    January 19, 2026

    Using Local LLMs to Discover High-Performance Algorithms

    January 19, 2026

    Comments are closed.

    Editors Picks

    Americans worry sports betting hurts integrity even as participation keeps rising

    January 20, 2026

    Best Home Ellipticals in 2026: Smash Your Health Goals With These Full-Body Workout Machines

    January 20, 2026

    From Vietnam Boat Refugee to Reliability Engineering

    January 20, 2026

    Does Calendar-Based Time-Intelligence Change Custom Logic?

    January 20, 2026
    Categories
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    About Us
    About Us

    Welcome to Times Featured, an AI-driven entrepreneurship growth engine that is transforming the future of work, bridging the digital divide and encouraging younger community inclusion in the 4th Industrial Revolution, and nurturing new market leaders.

    Empowering the growth of profiles, leaders, entrepreneurs businesses, and startups on international landscape.

    Asia-Middle East-Europe-North America-Australia-Africa

    Facebook LinkedIn WhatsApp
    Featured Picks

    London’s fan3 raises €4.2 million to address ticket reselling and scalpers

    October 1, 2025

    Feeling Off? These 7 Warning Signs Could Mean You’re Iron Deficient

    June 21, 2025

    😲 Quantifying Surprise – A Data Scientist’s Intro To Information Theory – Part 1/4: Foundations

    February 4, 2025
    Categories
    • Founders
    • Startups
    • Technology
    • Profiles
    • Entrepreneurs
    • Leaders
    • Students
    • VC Funds
    Copyright © 2024 Timesfeatured.com IP Limited. All Rights.
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us

    Type above and press Enter to search. Press Esc to cancel.