1- # JSON to CSV Converter (Multi-File)
1+ # FileShift
22
3- A powerful native macOS application for converting JSON files to CSV format with advanced schema analysis and field merging capabilities .
3+ A powerful native macOS application for converting, splitting, and merging JSON, JSONL, and CSV files .
44
5- ![ Build Status ] ( https://github.com/simplifi/json-converter/workflows/Build%20JSON%20to%20CSV%20Converter/badge.svg )
5+ ** Version 0.2.0 **
66
77---
88
9- ## 🚀 Quick Start
9+ ## Quick Start
1010
11- ** Download for your Mac:**
12- - [ 📥 Intel Mac] ( https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-intel.dmg ) • [ 📥 Apple Silicon] ( https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-apple-silicon.dmg )
11+ ** Download:** [ FileShift for Apple Silicon] ( https://github.com/simplifi/FileShift/releases/latest/download/FileShift-apple-silicon.dmg ) (M1/M2/M3/M4)
1312
14- ** ⚠️ First Launch:** Right-click the app and select "Open" to bypass the security warning (see [ Installation] ( #installation ) for details)
13+ ** First Launch:** Right-click the app and select "Open" to bypass the security warning (see [ Installation] ( #installation ) for details)
1514
1615---
1716
1817## Features
1918
20- - 🚀 ** Batch Processing** : Convert multiple JSON files at once
21- - 🧠 ** Smart Schema Analysis** : Automatically analyzes and compares schemas across files
22- - 🔀 ** Multiple Merge Strategies** :
19+ ### Convert Tab
20+ - ** Batch Processing** : Convert multiple JSON files to CSV at once
21+ - ** Smart Schema Analysis** : Automatically analyzes and compares schemas across files
22+ - ** Multiple Merge Strategies** :
2323 - Smart Auto: Fields present in 70%+ of files
2424 - All Available: Union of all fields across files
2525 - Common Only: Fields present in ALL files
2626 - Most Complete File: Use the file with most fields as template
2727 - Keep Separate: Individual CSV files with their own schemas
28- - 📊 ** Nested Field Support** : Handles complex nested JSON structures
29- - 🖥️ ** Native macOS Interface** : Built with PyQt6 for a smooth, native experience
30- - 📝 ** Real-time Status Logging** : Track conversion progress with detailed logs
31-
32- ## 📥 Download
33-
34- ### Quick Download (Latest Release)
28+ - ** Nested Field Support** : Handles complex nested JSON structures
29+
30+ ### Split Tab
31+ - ** Split by Number of Files** : Divide a file into N equal parts
32+ - ** Split by Rows** : Create files with a specific number of records each
33+ - ** Split by Size** : Create files of approximately N kilobytes each
34+ - ** Format Flexibility** : Input can be JSON, JSONL, or CSV; output format is selectable
35+
36+ ### Merge Tab
37+ - ** Combine Multiple Files** : Merge any number of files into one
38+ - ** Mixed Format Support** : Merge JSON, JSONL, and CSV files together
39+ - ** Schema Strategies** :
40+ - Union: Include all fields from all files
41+ - Intersection: Only include fields common to all files
42+ - First File: Use the schema from the first file
43+ - ** Output Format Selection** : Choose JSON, JSONL, or CSV output
44+
45+ ### General
46+ - ** Native macOS Interface** : Built with PyQt6 for a smooth, native experience
47+ - ** Real-time Progress** : Track operations with progress bars and status logs
48+ - ** Memory Efficient** : Streaming processing for large files
49+
50+ ## Download
3551
3652| Mac Type | Download Link |
3753| ----------| --------------|
38- | ** Intel Macs** | [ 📥 Download Intel DMG] ( https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-intel.dmg ) |
39- | ** Apple Silicon** (M1/M2/M3) | [ 📥 Download Apple Silicon DMG] ( https://github.com/simplifi/json-converter/releases/latest/download/JSON-to-CSV-Converter-apple-silicon.dmg ) |
40-
41- > ** 📋 All Releases** : View all versions on the [ Releases page] ( https://github.com/simplifi/json-converter/releases )
54+ | ** Apple Silicon** (M1/M2/M3/M4) | [ Download DMG] ( https://github.com/simplifi/FileShift/releases/latest/download/FileShift-apple-silicon.dmg ) |
4255
43- ### How to check your Mac type
44- 1 . Click the Apple menu > About This Mac
45- 2 . Look for "Chip" or "Processor"
46- - Intel processor = Download Intel version
47- - Apple M1/M2/M3 = Download Apple Silicon version
56+ > ** All Releases** : View all versions on the [ Releases page] ( https://github.com/simplifi/FileShift/releases )
4857
4958## Installation
5059
51- 1 . Download the appropriate DMG file for your Mac
60+ 1 . Download the DMG file
52612 . Double-click the DMG to mount it
53- 3 . Drag "JSON to CSV Converter " to your Applications folder
62+ 3 . Drag "FileShift " to your Applications folder
54634 . ** First time running** : The app will show a security warning because it's not signed with an Apple Developer certificate
5564
56- ### 🔒 Security Warning Fix
65+ ### Security Warning Fix
5766
5867When you first run the app, you'll see this warning:
59- > "JSON to CSV Converter .app" cannot be opened because Apple cannot verify that it is free from malware.
68+ > "FileShift .app" cannot be opened because Apple cannot verify that it is free from malware.
6069
6170** To safely run the app:**
6271
@@ -66,94 +75,106 @@ When you first run the app, you'll see this warning:
66754 . The app will now run normally
6776
6877** Alternative method:**
69- 1 . Go to ** System Preferences ** > ** Security & Privacy ** > ** General **
70- 2 . Click ** "Open Anyway"** next to the blocked app message
78+ 1 . Go to ** System Settings ** > ** Privacy & Security **
79+ 2 . Scroll down and click ** "Open Anyway"** next to the blocked app message
71803 . Enter your password when prompted
7281
73- ** Why this happens:**
74- - The app is unsigned (requires a paid Apple Developer account)
75- - This is normal for open-source software distributed outside the Mac App Store
76- - The warning is Apple's way of ensuring you intentionally want to run the app
77-
7882** Note:** After the first time, the app will open normally without any warnings.
7983
8084## Usage
8185
82- 1 . ** Select JSON Files** : Click "Browse for JSON Files" to select one or more JSON files
83- 2 . ** Schema Analysis** : The app automatically analyzes the structure of your files
84- 3 . ** Choose Strategy** : Select how you want to handle different schemas across files
85- 4 . ** Convert** : Click "Convert All Files" and choose an output directory
86+ ### Converting Files
87+
88+ 1 . Go to the ** Convert** tab
89+ 2 . Click "Browse for JSON Files" to select one or more JSON files
90+ 3 . The app automatically analyzes the structure of your files
91+ 4 . Select a merge strategy for handling different schemas
92+ 5 . Click "Convert All Files" and choose an output directory
8693
87- ### Field Selection Strategies
94+ ### Splitting Files
8895
89- - ** Smart Auto** : Includes fields that appear in at least 70% of your files
90- - ** All Available** : Includes every field found across all files (union)
91- - ** Common Only** : Only includes fields that exist in every single file
92- - ** Most Complete File** : Uses the schema from the file with the most fields
93- - ** Keep Files Separate** : Creates individual CSV files, each with its own schema
96+ 1 . Go to the ** Split** tab
97+ 2 . Select a single input file (JSON, JSONL, or CSV)
98+ 3 . Choose a split mode:
99+ - ** By number of files** : Split into N equal parts
100+ - ** By rows per file** : Each output file has N records
101+ - ** By file size** : Each output file is approximately N KB
102+ 4 . Select output format and directory
103+ 5 . Click "Split File"
104+
105+ ### Merging Files
106+
107+ 1 . Go to the ** Merge** tab
108+ 2 . Select multiple input files (can be mixed formats)
109+ 3 . Choose a schema strategy:
110+ - ** Union** : All fields from all files
111+ - ** Intersection** : Only common fields
112+ - ** First file** : Use first file's schema
113+ 4 . Select output format and file path
114+ 5 . Click "Merge Files"
94115
95116## Building from Source
96117
97118### Requirements
98119
99- - macOS 10.13 or later
100- - Python 3.8 or later
120+ - macOS 11 or later
121+ - Python 3.9 or later
101122- PyQt6
102123
103124### Quick Build
104125
105126``` bash
106127# Clone the repository
107- git clone https://github.com/simplifi/json-converter .git
108- cd json-converter
128+ git clone https://github.com/simplifi/FileShift .git
129+ cd FileShift
109130
110- # Run the build script
111- ./build_app.sh
112- ```
131+ # Create virtual environment
132+ python -m venv .venv
133+ source .venv/bin/activate
113134
114- The built application will be in ` dist/JSON to CSV Converter.app `
135+ # Install dependencies
136+ pip install PyQt6 pyinstaller
115137
116- ### Building for Different Architectures
138+ # Build the app
139+ pyinstaller --clean fileshift.spec
140+ ```
117141
118- See [ README_BUILD.md ] ( README_BUILD.md ) for detailed instructions on building for both Intel and Apple Silicon Macs.
142+ The built application will be in ` dist/FileShift.app `
119143
120144## Development
121145
122146### Setting up the development environment
123147
124148``` bash
125149# Create virtual environment
126- python3 -m venv . venv
150+ uv venv
127151source .venv/bin/activate
128152
129153# Install dependencies
130- pip install -r requirements.txt
154+ uv pip install -e " .[dev] "
131155
132156# Run the application
133157python json_to_csv_multifile_pyqt.py
158+
159+ # Run tests
160+ pytest
134161```
135162
136163### Project Structure
137164
138165```
139- json-converter/
140- ├── json_to_csv_multifile_pyqt.py # Main application
141- ├── generate_sample_data.py # Generate test data
142- ├── build_app.sh # Build script
143- ├── requirements.txt # Python dependencies
144- └── samples/ # Sample JSON files
166+ FileShift/
167+ ├── json_to_csv_multifile_pyqt.py # Main GUI application
168+ ├── src/
169+ │ └── converters/ # Core conversion library
170+ │ ├── base.py # Base classes and types
171+ │ ├── handlers.py # Format handlers (JSON, JSONL, CSV)
172+ │ └── operations.py # Split and merge operations
173+ ├── tests/ # Test suite
174+ ├── fileshift.spec # PyInstaller build spec
175+ └── pyproject.toml # Project configuration
145176```
146177
147- ## Sample Data
148-
149- Generate sample data for testing:
150-
151- ``` bash
152- python generate_sample_data.py
153- ```
154-
155- This creates various JSON files with different schemas and sizes in the ` samples/ ` directory.
156-
157178## Contributing
158179
1591801 . Fork the repository
@@ -173,4 +194,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
173194
174195## Support
175196
176- For issues, questions, or contributions, please visit the [ GitHub repository] ( https://github.com/simplifi/json-converter ) .
197+ For issues, questions, or contributions, please visit the [ GitHub repository] ( https://github.com/simplifi/FileShift ) .
0 commit comments