(define (json->csv in-file out-file) (let ((keys (with-input-from-file in-file (lambda () (non-nested-keys (read-json (read-line))))))) (with-output-to-file out-file (lambda () ;; Write the csv header (write-csv (list keys)) (call-with-input-file in-file (lambda (in) (let loop ((in in)) (receive (object remainder) (read-json in consume-trailing-whitespace: #f chunk-size: (* 5 1024)) (write-csv (list (alist->nested-list object keys))) (if object (loop remainder))))))))))