DataSwap Γρήγοροι μετατροπείς αρχείων και δεδομένων, χωρίς εγγραφή

Μετατροπέας CSV σε JSON

Επικολλήστε το CSV σας παρακάτω — η πρώτη γραμμή χρησιμοποιείται ως κεφαλίδες. Τα πεδία σε εισαγωγικά με ενσωματωμένα κόμματα, νέες γραμμές και εισαγωγικά με escape αναλύονται σωστά, όχι με αφελή διαχωρισμό. Τίποτα από όσα επικολλάτε δεν φεύγει από το πρόγραμμα περιήγησής σας.

Γιατί έχει σημασία ένας πραγματικός αναλυτής CSV

Το CSV φαίνεται απλό — διαχωρισμός στα κόμματα, διαχωρισμός στις νέες γραμμές, τέλος — μέχρι ένα πεδίο να περιέχει το ίδιο ένα κόμμα. Η προδιαγραφή CSV απαντά τυλίγοντας αυτό το πεδίο σε διπλά εισαγωγικά, και κάνοντας escape σε κάθε κυριολεκτικό εισαγωγικό μέσα του διπλασιάζοντάς το (""). Ένα πεδίο μπορεί ακόμα και να περιέχει πραγματική νέα γραμμή αρκεί να βρίσκεται μέσα σε εισαγωγικά. Ένας αφελής αναλυτής με split(",") δεν γνωρίζει τίποτα από αυτά: αντιμετωπίζει κάθε κόμμα ως όριο στήλης, οπότε ένα μόνο πεδίο σε εισαγωγικά όπως το "Smith, John" κόβεται σε δύο στήλες και κάθε επόμενο πεδίο σε αυτή τη γραμμή μετατοπίζεται εκτός ευθυγράμμισης — σιωπηλή καταστροφή, όχι σφάλμα. Αυτό το εργαλείο αντίθετα διαβάζει την είσοδο έναν χαρακτήρα τη φορά, παρακολουθώντας αν βρίσκεται αυτή τη στιγμή μέσα σε πεδίο με εισαγωγικά, ώστε τα κόμματα και οι νέες γραμμές σε εισαγωγικά να παραμένουν μέρος του πεδίου στο οποίο ανήκουν.

Επιπλέον, αυτή η σελίδα χρησιμοποιεί το ερωτηματικό ως προεπιλεγμένο διαχωριστή αντί για το κόμμα. Δεν είναι τυχαίο: στα ελληνικά (και στους περισσότερους ευρωπαϊκούς locale) το κόμμα χρησιμοποιείται ήδη ως δεκαδικός διαχωριστής — το 3,14 είναι το π, όχι δύο ξεχωριστές στήλες. Γι' αυτό το Excel στα ελληνικά εξάγει CSV με ερωτηματικό ως προεπιλογή, και αυτό το εργαλείο αντικατοπτρίζει την ίδια σύμβαση ώστε να μπορείτε να επικολλήσετε τις εξαγωγές σας όπως είναι χωρίς να χρειάζεται να αλλάζετε τον επιλογέα κάθε φορά.

Πρακτικό παράδειγμα

Είσοδος:

όνομα;πόλη
"Smith; John";"Νέα Υόρκη"
"O""Brien";Βοστώνη

Η πρώτη γραμμή έχει ένα ερωτηματικό μέσα σε ένα όνομα με εισαγωγικά — ένας αφελής αναλυτής θα το διάβαζε ως τέσσερις στήλες αντί για δύο και θα κατέστρεφε την υπόλοιπη πινακοποίηση. Η δεύτερη γραμμή έχει ένα εισαγωγικό με escape "", το οποίο πρέπει να συμπτυχθεί σε ένα μόνο κυριολεκτικό εισαγωγικό ". Αυτό το εργαλείο παράγει:

[
  {
    "όνομα": "Smith, John",
    "πόλη": "Νέα Υόρκη"
  },
  {
    "όνομα": "O\"Brien",
    "πόλη": "Βοστώνη"
  }
]

— δύο καθαρές γραμμές, το ενσωματωμένο ερωτηματικό διατηρημένο ως μέρος του ονόματος, και το O""Brien σωστά συμπτυγμένο σε ένα μόνο O"Brien.

Συχνές ερωτήσεις

Γιατί όχι απλώς διαχωρισμός κάθε γραμμής στα κόμματα;

Επειδή το πραγματικό CSV επιτρέπει ένα κόμμα μέσα σε ένα πεδίο, αρκεί το πεδίο να είναι τυλιγμένο σε διπλά εισαγωγικά — ένα όνομα όπως "Smith, John" είναι ένα πεδίο, όχι δύο. Ένα αφελές split(",") θα έσπαγε αυτό το πεδίο στη μέση και θα μετατόπιζε κάθε επόμενη στήλη εκτός ευθυγράμμισης για την υπόλοιπη γραμμή. Αυτό το εργαλείο χρησιμοποιεί έναν πραγματικό αναλυτή χαρακτήρα προς χαρακτήρα που παρακολουθεί αν βρίσκεται αυτή τη στιγμή μέσα σε πεδίο με εισαγωγικά, οπότε ένα κόμμα εκεί είναι απλώς κείμενο, όχι διαχωριστής.

Το CSV μου χρησιμοποιεί ερωτηματικό αντί για κόμμα — θα λειτουργήσει;

Ναι — χρησιμοποιήστε τον επιλογέα διαχωριστή πάνω από το πεδίο εισαγωγής για εναλλαγή μεταξύ κόμματος, ερωτηματικού και tab. Γι' αυτό, εξάλλου, αυτή η σελίδα χρησιμοποιεί το ερωτηματικό ως προεπιλεγμένη επιλογή: είναι η προεπιλεγμένη μορφή εξαγωγής του Excel στα ελληνικά, ακριβώς επειδή σε αυτό το locale το κόμμα χρησιμοποιείται ήδη ως δεκαδικός διαχωριστής (οπότε το "3,14" σημαίνει π, όχι δύο τιμές) — ένα αρχείο διαχωρισμένο με κόμματα θα ήταν εκεί πραγματικά διφορούμενο.

Τι συμβαίνει αν μια γραμμή έχει περισσότερα ή λιγότερα πεδία από τη γραμμή κεφαλίδας;

Δεν καταρρέει ούτε αποδιοργανώνει σιωπηλά τα δεδομένα σας. Αν μια γραμμή είναι κοντή, τα πεδία που λείπουν στο τέλος συμπληρώνονται ως κενές συμβολοσειρές. Αν μια γραμμή έχει επιπλέον πεδία πέρα από την τελευταία κεφαλίδα, αυτά τα επιπλέον απορρίπτονται. Όταν αυτό συμβαίνει οπουδήποτε στο αρχείο σας, εμφανίζεται μια σημείωση πάνω από την έξοδο που αναφέρει πόσες γραμμές επηρεάστηκαν, ώστε να μπορείτε να ελέγξετε την πηγή.

Ανεβαίνει το CSV μου κάπου;

Όχι. Η ανάλυση γίνεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας με απλή JavaScript — τίποτα από όσα επικολλάτε δεν στέλνεται, δεν αποθηκεύεται και δεν καταγράφεται σε κανέναν διακομιστή. Ισχύει το ίδιο για κάθε εργαλείο αυτού του site.