🚀 Faster, smarter, cleaner. RabbitJSON is a modern, high-performance JSON parser for Classic ASP — fully surpassing outdated and buggy alternatives like aspJSON.com and rcdmk/aspJSON.
Working with JSON data in Classic ASP is no longer a nightmare! Most existing solutions are either outdated or break with modern JSON structures. RabbitJSON solves all these issues:
✅ Path-based data access (user.profile.settings.theme
)
✅ Load JSON directly from HTTP/HTTPS
✅ Full support for Unicode, emojis, and scientific notation
✅ Configuration system - set maxDepth
, strictMode
✅ Default value support - safe data access
✅ Advanced error handling - HasError()
, LastError
, ClearError()
✅ Stringify & compact stringify support
✅ Comprehensive test coverage and real-time benchmarking
✅ Zero dependencies - pure Classic ASP
✅ Only 41 KB (uncompressed)
Below is a real-world performance comparison:
Test Category | RabbitJSON | rcdmk/aspJSON | gerritvankuipers/aspjson |
---|---|---|---|
Local JSON Parse | ✅ ~150ms | ✅ ~200ms | ✅ ~180ms |
HTTP JSON Loading | ✅ ~500ms | ❌ Not supported | ❌ Not supported |
Path-based Access | ✅ a.b[0].c |
❌ Manual code | ❌ Manual code |
Unicode Support | ✅ Full | ❌ Limited | ❌ Partial |
Emoji Support | ✅ Excellent | ❌ None | ❌ Buggy |
Stringify | ✅ Advanced | ✅ Basic | ✅ Basic |
Compact Stringify | ✅ Optimized | ❌ None | ❌ None |
Error Handling | ✅ Comprehensive | ❌ Minimal | ❌ Poor |
Memory Management | ✅ Automatic | ❌ Manual | ❓ Unknown |
File Size | ✅ 41 KB | ~25 KB | ~9.52 KB |
RabbitJSON comes with a transparent and robust testing system. Two main test types:
104 unique test scenarios validate all core features:
- View Test Code: comprehensive-test.asp.txt
- Live Test Result: comprehensive-test.html
Real-time performance benchmarking with large data:
- View Test Code: load-test.asp.txt
- Live Test Result: load-test.html
- Sample JSON: sample-data.json (7.6 KB real e-commerce data)
Set json = New RabbitJSON
json.Parse "{""users"": [{""name"": ""Ahmet"", ""age"": 25}, {""name"": ""Ayşe"", ""age"": 30}]}"
Response.Write json.GetValue("users.0.name") ' Output: Ahmet
Response.Write json.GetValue("users.1.name") ' Output: Ayşe
Set json = New RabbitJSON
json.Parse "https://jsonplaceholder.typicode.com/users/1"
Response.Write json.GetValue("name") ' Fetched directly from API
' These characters work flawlessly: ş, ğ, ü, ı, ö, ç, €, 😊, 🚀, 🐇
json.Parse "{\"message\":\"Hello 🐇 RabbitJSON! 😊\"}"
' Readable format
jsonString = json.Stringify(data, 2)
' Compact format (bandwidth saving)
compactJson = json.StringifyCompact(data)
Set json = New RabbitJSON
json.Config("maxDepth") = 50
json.Config("strictMode") = True
json.Parse invalidJsonString
If json.HasError() Then
Response.Write "Parse Error: " & json.LastError
json.ClearError()
End If
Set json = New RabbitJSON
json.Parse "{\"user\":{\"name\":\"Mehmet\"}}"
userName = json.GetValue("user.name", "Unknown")
userAge = json.GetValue("user.age", 0)
userPhone = json.GetValue("user.phone", "Not Provided")
Include RabbitJSON in your project:
<!--#include file="RabbitJSON.v2.asp" -->
<%
Set json = New RabbitJSON
json.Parse "{\"name\":\"Mehmet\",\"age\":30}"
Response.Write json.GetValue("name", "") ' Output: Mehmet
%>
📖 Full API Reference: api.md — All methods, parameters, and examples included.
Parse(jsonString)
- Parses a JSON stringGetValue(path)
- Retrieves value using a path (e.g.,user.profile.name
)SetValue(path, value)
- Writes value to a pathStringify(object, indent)
- Converts object to JSONStringifyCompact(object)
- Compact JSON output
HasValue(path)
- Checks path existenceRemoveValue(path)
- Deletes value at pathGetKeys()
- Lists root keysClear()
- Clears all data
CreateRabbitJSON()
- Returns a new RabbitJSON instanceQuickParse(jsonString)
- Static quick parse methodQuickStringify(object, indent)
- Static stringify method
Config(key, value)
- Configuration (maxDepth
,strictMode
)HasError()
- Checks for error stateLastError
- Last error message propertyClearError()
- Clears error stateGetValue(path, defaultValue)
- Safe value accessGetValueSimple(path)
- Simple value accessVersion
- Version info propertyCount
- Total element count property
Set json = New RabbitJSON
json.Parse "https://api.example.com/products"
For i = 0 To json.GetValue("products").Count - 1
Response.Write json.GetValue("products." & i & ".name", "-") & "<br>"
Response.Write json.GetValue("products." & i & ".price", "0") & " TL<br>"
Next
Set json = New RabbitJSON
json.Parse Request.Form("jsonData")
userName = json.GetValue("user.profile.displayName")
userEmail = json.GetValue("user.contact.email")
Set config = New RabbitJSON
config.Parse Server.MapPath("config.json")
dbServer = config.GetValue("database.server", "localhost")
dbPort = config.GetValue("database.port", 1433)
Set json = New RabbitJSON
json.Config("maxDepth") = 20
json.Config("strictMode") = True
json.Parse userInputJson
If json.HasError() Then
Response.Write "Invalid JSON format"
json.ClearError()
Else
userName = json.GetValue("user.name", "Anonymous")
Response.Write "Hello " & userName
End If
- Platform: Classic ASP / VBScript 5.x+
- Dependencies: None (uses built-in COM objects only)
- File Size: 40.463 bytes (41 KB)
- Memory Use: Optimized with auto-cleanup
- Performance: Optimized for string operations
- Compatibility: IIS 6.0+ and Windows Server 2003+
❌ Corrupts Unicode characters ❌ Memory leaks on large files ❌ No HTTP loading support ❌ No path-based access
❌ No longer maintained (last update in 2019) ❌ Fails with modern JSON formats ❌ No emoji support ❌ Performance issues
✅ Actively developed in 2025 ✅ Full test coverage - 104 test scenarios ✅ Transparent benchmarking - real performance metrics ✅ Production-ready - used in live environments
- ✅ Load JSON from HTTP/HTTPS URLs
- ✅ Config system (
maxDepth
,strictMode
) - ✅ Default value support
- ✅ Advanced error handling
- ✅ QuickParse and QuickStringify static methods
- ✅ Version and Count properties
- ✅ Improved key parsing algorithm
- ✅ VBScript compatibility fixes
- ✅ 104 test scenarios with 100% success
- ✅ Path-based data access
- ✅ Full Unicode and emoji support
- ✅ Stringify and StringifyCompact
- ✅ Automatic memory management
- String parsing optimization
- Advanced memory management
- Lazy loading support
- Internal caching system
- Async processing for large datasets
- Built-in profiler
GetPerformanceStats()
metrics- Debug mode with verbose logs
- Custom headers:
Parse(url, headers)
- Auth: Basic, Bearer Token, API Key
- Timeout control
- Retry mechanism
- Request delay
- SSL/TLS options
- Proxy support
- JSON Schema validation
- Diff & Merge support
- Input sanitization
- Field-level access control
- Audit logging
- Encryption
- Enterprise config options
- Native COM component written in C++
- Feature requests: via GitHub Issues
- Beta testing: join the beta program
- Discussions: Share feedback via GitHub Discussions
MIT License © 2025 Anthony Burak Dursun
This software is licensed under the MIT License.
You are free to use it in commercial and personal projects.
To contribute to RabbitJSON:
- Fork the project
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- 📖 API Docs: RabbitJSON-Documentation.html
- 📖 API Reference: api.md
- 📌 All Samples: all-sample.html
- 🧪 Test Runner: all-sample-test/
- �\udbug Report Bugs: GitHub Issues
- 💬 Community Support: GitHub Discussions
🐇 RabbitJSON - The JSON future of Classic ASP!