🦀/100 Projects/Notes/Source

src/main.rs

View on GitHub
use csv::ReaderBuilder;
use serde_json::to_string_pretty;
use std::env;
use std::fs::File;
 
#[derive(Debug, serde::Deserialize, serde::Serialize)]
struct Record {
    name: String,
    email: String,
    age: u32,
}
 
fn main() {
    let args: Vec<String> = env::args().collect();
 
    if args.len() != 3 {
        eprintln!("Usage: {} <input.csv> <output.json>", args[0]);
        return;
    }
 
    let input_path = &args[1];
    let output_path = &args[2];
 
    let file = File::open(input_path).expect("❌ Failed to open CSV file");
    let mut reader = ReaderBuilder::new().from_reader(file);
 
    let mut records = Vec::new();
    for result in reader.deserialize::<Record>() {
        let record = result.expect("❌ Failed to parse a row");
        records.push(record);
    }
 
    let json = to_string_pretty(&records).expect("❌ Failed to serialize JSON");
    std::fs::write(output_path, json).expect("❌ Failed to write JSON");
 
    println!("✅ Converted {} → {}", input_path, output_path);
}

← Back to folder