A modern, feature-rich JSON data visualization and manipulation tool built with Vue 3, TypeScript, and D3.js. Process and visualize JSON, YAML, CSV, XML, and TOML data with interactive visualizations, all running locally in your browser.
Interactive JSON visualization with tree, card, and graph views
π Try Live Demo | π¦ Download Latest Release
- Multi-Format Support: JSON, YAML, CSV, XML, and TOML parsing and formatting
- Live Editor: Monaco Editor with syntax highlighting and auto-completion
- File Operations: Upload files via button or drag-and-drop
- Data Validation: Real-time validation with error reporting
- Format Conversion: Convert between any supported formats
- Export Options: Download data or export visualizations as images
- Tree View (Default): Hierarchical data structure with expandable nodes
- Card View: Modern card-based interface with type badges
- Graph View: Network visualization with interactive physics simulation
- Zoom & Pan: Navigate large datasets with precision controls
- Dark/Light Theme: Toggle between themes with instant visualization updates
- Split-Pane Layout: Side-by-side editor and visualization
- Responsive Design: Works on desktop, tablet, and mobile
- Theme Support: Beautiful dark and light modes
- Professional Typography: Monospace code fonts for better readability
- Smooth Animations: Hover effects and transitions throughout
- JSON Path Generation: Right-click any element to copy its JSON path
- Data Export: Multiple export formats (PNG, JSON, etc.)
- Sample Data: Built-in examples to get started quickly
- Type Indicators: Color-coded badges for different data types
- Error Handling: Comprehensive validation and error reporting
- 100% Local Processing: All data stays in your browser
- No Server Communication: Works completely offline
- No Data Storage: Nothing is saved or transmitted
# Clone the repository
git clone https://github.com/hypnguyen1209/json-editor
cd json-editor
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
- Upload Data: Click "Upload" or drag-and-drop any supported file format
- Edit Data: Use the Monaco editor with syntax highlighting
- Visualize: Switch between Tree, Card, or Graph views
- Export: Download formatted data or export visualizations
- Format Conversion: Select a different format from the dropdown to convert data
- JSON Path Copying: Right-click any element in visualizations to copy its path
- Zoom Controls: Use zoom buttons or mouse wheel in visualization panel
- Theme Toggle: Switch between light and dark modes instantly
- JSON (
.json
) - JavaScript Object Notation - YAML (
.yaml
,.yml
) - YAML Ain't Markup Language - CSV (
.csv
) - Comma-Separated Values - XML (
.xml
) - eXtensible Markup Language - TOML (
.toml
) - Tom's Obvious Minimal Language
- Vue 3 with Composition API for reactive UI components
- TypeScript for type-safe development
- Vite for fast development and optimized builds
- SCSS for advanced styling capabilities
- Pinia for state management
- D3.js v7 for interactive graph and tree visualizations
- Monaco Editor for advanced code editing capabilities
- html2canvas for image export functionality
- js-yaml for YAML parsing and stringification
- papaparse for CSV parsing with type inference
- xml2js for XML to JSON conversion
- @ltd/j-toml for TOML format support
json-editor/
βββ src/
β βββ components/
β β βββ layout/ # Header, Footer components
β β βββ ui/ # Reusable UI components
β β βββ visualizations/ # Tree, Card, Graph views
β βββ stores/ # Pinia store for state management
β βββ styles/ # Global SCSS styles
β βββ utils/ # Data parsing and export utilities
βββ public/ # Static assets
βββ package.json # Dependencies and scripts
- Strings: Green (
#7ee787
) - Text data - Numbers: Orange (
#ffa657
) - Numeric values - Booleans: Red (
#ff7b72
) - True/false values - Arrays: Purple (
#d2a8ff
) - List structures - Objects: Blue (
#79c0ff
) - Key-value pairs - Null/Undefined: Gray (
#8b949e
) - Empty values
- Code Font: SF Mono, Monaco, Cascadia Code (monospace)
- UI Font: System font stack for optimal performance
- Consistent Spacing: 8px grid system throughout
- Multiple Upload Methods: Button click or drag-and-drop anywhere on the editor
- Auto-Format Detection: Automatically selects correct parser based on file extension
- Error Handling: Clear feedback for unsupported formats or parsing errors
- File Info Display: Shows current filename and validation status
- Syntax Highlighting: Language-specific highlighting for all supported formats
- Auto-Completion: Intelligent suggestions while typing
- Error Indicators: Real-time error highlighting and tooltips
- Theme Synchronization: Editor theme matches application theme
- Hierarchical Structure: Shows data nesting levels clearly
- Expandable Nodes: Click to expand/collapse any level
- Type Badges: Visual indicators for data types
- Path Navigation: Easy traversal of complex data structures
- Modern Layout: Card-based interface similar to popular tools
- Responsive Grid: Automatically adjusts to container size
- Type Indicators: Color-coded badges for immediate recognition
- Hover Effects: Smooth animations for better user experience
- Network Visualization: Shows relationships between data elements
- Interactive Physics: Drag nodes, enable/disable physics simulation
- Zoom & Pan: Navigate large datasets with mouse controls
- Node Selection: Click nodes to see detailed information
- Image Export: High-quality PNG export of visualizations
- Data Download: Export formatted data in any supported format
- JSON Path Copy: Right-click any element to copy its path
- Clipboard Integration: One-click copying to clipboard
npm run dev
- Start development server with hot reloadnpm run build
- Build for productionnpm run preview
- Preview production build locallynpm run type-check
- Run TypeScript type checkingnpm run release
- Create patch release (auto-increment version)npm run release:minor
- Create minor releasenpm run release:major
- Create major release
- Node.js: Version 22 or higher required
- Package Manager: npm or yarn
- Browser: Modern browsers with ES2020 support
File: .github/workflows/ci.yml
- Trigger: Push to main/develop, Pull Requests
- Actions: Install dependencies, type checking, build
- Node.js: v22 (latest LTS)
- Artifacts: Uploads built files for review
File: .github/workflows/build-and-release.yml
- Trigger: Version tags (v1.0.0, v2.1.3, etc.) or manual dispatch
- Actions: Build project, create zip archive, GitHub release
- Output:
json-editor-dist.zip
attached to release - Usage: Perfect for distributing standalone builds
File: .github/workflows/deploy-pages.yml
- Trigger: Push to main branch or manual dispatch
- Actions: Build and deploy to GitHub Pages
- URL: Accessible at
https://hypnguyen1209.github.io/json-editor/
- Auto-Deploy: Every commit to main triggers deployment
- Go to your repository Settings β Pages
- Under "Source", select "GitHub Actions"
- Save the settings
- The workflow will automatically deploy on next push
Alternative Deployment (if Pages API fails):
- Use
.github/workflows/deploy-pages-alt.yml
- Uses
peaceiris/actions-gh-pages
action - Automatically creates
gh-pages
branch
-
Automatic (Recommended):
npm run release # Patch version (1.0.0 β 1.0.1) npm run release:minor # Minor version (1.0.0 β 1.1.0) npm run release:major # Major version (1.0.0 β 2.0.0)
-
Manual:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions will automatically:
- Build the production version
- Create a zip file of the dist folder
- Create a GitHub release with changelog
- Attach the zip file as a downloadable asset
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues page for existing solutions
- Create a new issue with detailed information
- Include browser version and error messages
- Schema Validation: JSON Schema validation support
- Code Generation: Generate code templates from data structures
- JWT Decoding: Built-in JWT token decoder
- JSONPath Queries: Advanced data querying capabilities
- Diff Viewer: Compare two JSON structures
- Bookmark System: Save and organize frequently used data
- Virtual Scrolling: Handle extremely large datasets
- Worker Threads: Background data processing
- Caching: Intelligent data caching for better performance
Made with β€οΈ using Vue 3, TypeScript, and D3.js
Transform your data into beautiful, interactive visualizations with zero server dependencies.