Pakistan Ka Pehla Professional Trading Bot CourseModule 4

4.5JSON Parsing — AI Ka Output Reliably Parse Karo

25 min 12 code blocks Quiz (4Q)

JSON Parsing — AI Ka Output Reliably Parse Karo

Alright, class. Settle down. Welcome to Module 4, Lesson 4.5.

Aaj ka topic bohat zaroori hai. Hum ne pichlay lessons mein AI se signal lena seekha, lekin agar aap uss signal ko sahi se samajh hi na paayein, tou poora system bekaar hai. This is where most junior developers fail. Woh AI ko call kartay hain, response aata hai, aur json.loads() pe bot crash ho jaata hai. Phir woh sar pakar ke baith jaatay hain.

Hum woh ghalti nahi karengay.

COURSE: Pakistan Ka Pehla Professional Trading Bot Course

MODULE 4: AI Signal Engine — 4-Tier Decision System Banana

LESSON 4.5: JSON Parsing — AI Ka Output Reliably Parse Karo

Hook: AI Signal Aaya, Bot Crash Ho Gaya. Kyun?

Scene on karo: Raat ke 2 bajay hain. Aapka bot KSE (Karachi Stock Exchange) pe trade kar raha hai. AI ne ek golden "BUY" signal bheja hai for PSX (Pakistan Stock Exchange). Aapka bot signal ko process karne jaata hai aur... CRASH. Subha aap uthtay hain aur dekhtay hain ke ek potential 100,000 PKR ka profit miss ho gaya.

Kyun? Kyun ke AI ne JSON ke saath thori si "gup shup" bhi bhej di thi. Aaj hum is problem ko hamesha ke liye solve karna seekhain gay. Yeh lesson sirf code ke baaray mein nahi, yeh production-grade, robust software engineering ke baaray mein hai.

1

The Problem: AI JSON Kyun Messy Hota Hai?

Seedhi baat: AI models, like Gemini, Claude Haiku, or Sonnet, are Large Language Models, not Large JSON Models. Unka primary kaam text generate karna hai. Hum unhein prompt engineering se force kartay hain ke woh structured JSON dein, lekin woh kabhi kabhi "behak" jaatay hain.

Aap ko aisi cheezein milengi:

Example 1: Markdown Wrapper Yeh sab se common hai. AI "help" karne ke liye JSON ko code block mein daal deta hai.

text
```json
{
  "decision": "BUY",
  "symbol": "PSO",
  "amount_pkr": 50000,
  "reason": "Strong bullish momentum observed on 4-hour chart."
}
code

Agar aap is poori string pe `json.loads()` chalaogay, tou aagay se `JSONDecodeError` ka thappar paray ga.

**Example 2: Extra Commentary**
AI kabhi kabhi insaanon ki tarah behave karta hai. Woh aapko JSON se pehle ya baad mein extra text de dega.

```text
Of course! Based on your request, here is the trading signal:
{
  "decision": "SELL",
  "symbol": "UBL",
  "amount_pkr": 75000,
  "reason": "Approaching major resistance level. RSI is overbought."
}
I hope this helps with your trading strategy!

Yeh bhi seedha crash hai.

Hamaray Polymarket Oracle codebase mein, ai/gemini.py aur ai/sonnet.py se jo raw response aata hai, woh inhi maslon se bhara ho sakta hai. Hum uss response ko seedha execution.py ko nahi de saktay. Pehle ussay saaf karna parta hai.

2

The Solution: ,[object Object], — Hamara Universal Extractor

Is maslay ka hal hai ek "bulletproof" function jo har qisam ke messy text se JSON nikaal le. Hum isko safe_parse_json kehtay hain. Yeh function aapke bot ka guard hai. Yeh aane walay data ko check karta hai aur sirf saaf suthra JSON andar aanay deta hai.

Chalo is function ko line-by-line deconstruct kartay hain. Yeh code aapke production system ka ek core component banega.

python
import json
import re

def safe_parse_json(text: str | None) -> dict | list | None:
    """
    AI ka output parse karo — handles markdown, extra text, everything.
    Yeh function production mein ZAROORAT hai.
    """
    # Guard clause: Agar text hi nahi hai, tou aagay kya karna?
    if not text:
        return None
    
    # Step 1: Markdown code blocks ko hatao.
    # r'```json\s*' -> ```json ke baad jitni bhi space hai, usko remove karo
    # r'```\s*' -> Baaki ke ``` ko bhi remove karo
    text = re.sub(r'```json\s*', '', text)
    text = re.sub(r'```\s*', '', text)
    
    # Step 2: "Happy Path" - Koshish karo ke text ab saaf ho gaya hai.
    # .strip() se leading/trailing whitespace khatam ho jayega.
    try:
        return json.loads(text.strip())
    except json.JSONDecodeError:
        # Agar yahan fail hua, iska matlab hai abhi bhi extra text hai.
        pass
    
    # Step 3: Regex se JSON object dhoondo. Yeh sab se powerful step hai.
    # Yeh pattern pehle '{' se le kar aakhri matching '}' tak sab kuch extract kar lega.
    match = re.search(r'\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}', text)
    if match:
        try:
            return json.loads(match.group())
        except json.JSONDecodeError:
            # Ho sakta hai object ke andar koi ghalat format ho.
            pass
    
    # Step 4: Agar object nahi mila, tou JSON array dhoondo.
    # Same logic as above, but for square brackets [ ... ].
    match = re.search(r'\[[^\[\]]*(?:\[[^\[\]]*\][^\[\]]*)*\]', text)
    if match:
        try:
            return json.loads(match.group())
        except json.JSONDecodeError:
            pass
            
    # Step 5: Agar kuch bhi kaam na kare, tou give up. Crash mat ho.
    return None

# Chalo isko test kartay hain messy AI output ke saath
messy_ai_output = """
Hello! As per your request for a trade on the Pakistan Stock Exchange, 
I've analyzed the market. Here's my decision:

```json
{
    "decision": "BUY",
    "symbol": "LUCK",
    "amount_pkr": 150000,
    "confidence_score": 0.85
}

Please execute this with caution. The market is volatile. """

parsed_data = safe_parse_json(messy_ai_output)

if parsed_data: print("Successfully parsed JSON:") print(parsed_data) print(f"Decision: {parsed_data.get('decision')}") else: print("Failed to parse JSON from the AI output.")

code

**Output:**

Successfully parsed JSON: {'decision': 'BUY', 'symbol': 'LUCK', 'amount_pkr': 150000, 'confidence_score': 0.85} Decision: BUY

code

Dekha? Function ne pehle ````json` aur ```` ko hataya. Phir usne dekha ke extra text abhi bhi hai, isliye direct `json.loads` fail ho gaya. Aakhir mein, usne regex use kar ke sirf `{...}` wala hissa extract kiya aur usko successfully parse kar diya.

> **Pro Tip: Logging is Your Best Friend**
>
> Jab `safe_parse_json` function `None` return kare, tou sirf chup chaap fail mat ho. Uss original `text` ko log zaroor karo. Kyun?
>
> 1.  **Debugging:** Aapko pata chalega ke AI kis qisam ka "ganda" response bhej raha hai.
> 2.  **Prompt Improvement:** Agar aap dekhtay hain ke AI baar baar ek hi tarah ka ghalat format bhej raha hai, tou aap ja kar apna prompt theek kar saktay hain.
>
> Hamaray `scanner.py` mein, jab bhi parsing fail hoti hai, hum usko log karte hain for debugging and future improvement.

Reliable JSON parsing ensures your bot can process AI outputs without crashes or data loss.

---

## 📺 Recommended Videos & Resources
- **[JSON Parsing in Python](https://docs.python.org/3/library/json.html)** — json module reference
  - Type: Python Official Docs
  - Link description: Learn json.loads() and error handling
- **[Pydantic for Data Validation](https://docs.pydantic.dev/)** — Type-safe data parsing
  - Type: Official Documentation
  - Link description: Learn Pydantic models for robust validation
- **[Error Recovery Patterns](https://www.youtube.com/results?search_query=python+error+recovery+patterns+graceful+degradation)** — Handling parsing failures
  - Type: YouTube
  - Link description: Search "Python error recovery and fallbacks"
- **[Regex for Text Extraction](https://docs.python.org/3/library/re.html)** — Advanced string parsing
  - Type: Python Official Docs
  - Link description: Learn regex for extracting JSON from LLM responses
- **[Prompt Engineering for Consistent Outputs](https://www.youtube.com/results?search_query=claude+prompt+engineering+json+output+format)** — Getting reliable formats
  - Type: YouTube
  - Link description: Search "Claude prompt engineering for JSON outputs"

---

## 🎯 Mini-Challenge
**5-Minute Practical Task:** Create a robust JSON parser function that: (1) Handles valid JSON, (2) Extracts JSON from markdown code blocks (```json...```), (3) Falls back to default values if parsing fails, (4) Logs the failure for debugging. Test with 5 different malformed responses to ensure graceful handling.

---

## 🖼️ Visual Reference

📊 Robust JSON Parsing Pipeline ┌─────────────────────────┐ │ AI Model Response │ │ (Text, possibly messy) │ └────────────┬────────────┘ │ ▼ ┌─────────────────────────┐ │ Step 1: Extract JSON │ │ - Remove markdown blocks│ │ - Find { } boundaries │ └────────────┬────────────┘ │ ▼ ┌─────────────────────────┐ │ Step 2: Parse │ │ - json.loads() │ │ - Handle decode errors │ └────────────┬────────────┘ ┌────┴───────┐ │ │ ▼ (Success) ▼ (Fail) ┌────────┐ ┌────────────┐ │ Return │ │ Log error, │ │ Valid │ │ Use fallback│ │ JSON │ │ defaults │ └────────┘ └────────────┘

code

---

Lesson Summary

12 runnable code examples4-question knowledge check below

Quiz: JSON Parsing — AI Ka Output Reliably Parse Karo

4 questions to test your understanding. Score 60% or higher to pass.