fixmint
PL

Konwersja CSV na JSON i z powrotem bez utraty danych

Autor: · · zaktualizowano 8 listopada 2026 · czas czytania: 5 min

CSV to zwykła tabela tekstowa: jeden rekord w wierszu, a pola oddzielone separatorem, zwykle przecinkiem. Dane się psują, gdy pole zawiera separator, cudzysłów lub znak nowej linii, bo czytnik musi odróżnić strukturę od treści. Stosuj reguły cytowania, sprawdzaj separator i wiersz nagłówka oraz zachowuj liczby z zerami wiodącymi jako tekst. Reszta artykułu opisuje, co konwersja w obie strony może, a czego nie może zachować.

CSV na JSONPotrzebuję CSV jako JSON lub odwrotnieZrób to za darmo

Czym naprawdę jest plik CSV

CSV nie ma jednego wiążącego standardu, ale RFC 4180 opisuje wspólną postać, której używa większość czytników. Jego podstawowe zasady mieszczą się w krótkiej liście:

  • Każdy rekord zajmuje osobny wiersz, a RFC wskazuje, że wiersze kończą się znakiem powrotu karetki i nowej linii, CRLF.
  • Pola oddziela się przecinkami.
  • Pole zawierające przecinek, cudzysłów lub łamanie wiersza ujmuje się w cudzysłowy.
  • Cudzysłów wewnątrz pola w cudzysłowach zapisuje się jako dwa cudzysłowy.

Zatem wiersz 1001,"Smith, Ann",02134 ma trzy pola, bo przecinek w cudzysłowach jest treścią. Parser dzielący po każdym przecinku znajdzie cztery. Czytnik fixmint stosuje te reguły: pole w cudzysłowach może zawierać separator, łamania wierszy i podwojone cudzysłowy, a niezamknięty cudzysłów jest zgłaszany wraz z wierszem, w którym się zaczyna.

Dlaczego separator się zmienia

Przecinek jest domyślny w RFC, ale tam, gdzie przecinek jest znakiem dziesiętnym, tak że 1,5 oznacza półtora, arkusze kalkulacyjne często zapisują CSV ze średnikami. Pliki rozdzielane tabulatorami (TSV) unikają tego konfliktu w większości danych, bo tabulatory rzadko pojawiają się w tekście.

Menu Separator oferuje opcje: Auto, Przecinek, Średnik, Tabulator i Kreska pionowa. Auto czyta pierwsze dziesięć wierszy, zlicza każdy kandydat poza cudzysłowami i wybiera ten, którego liczba na wiersz jest najbardziej stała. Wybierz separator samodzielnie, gdy Auto zgadnie źle.

Konwersja w fixmint

Przykład poniżej używa domyślnych ustawień narzędzia CSV na JSON.

Przykład

Wklej poniższy CSV, z zaznaczoną opcją „Pierwszy wiersz to nagłówek”:

id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"

Przy wyłączonej opcji Konwertuj liczby i wcięciu JSON ustawionym na 2 spacje narzędzie zwraca:

[
  {
    "id": "1001",
    "name": "Smith, Ann",
    "zip": "02134",
    "note": "She said \"hi\""
  },
  {
    "id": "1002",
    "name": "Bo",
    "zip": "10001",
    "note": "line one\nline two"
  }
]

Z włączoną opcją Konwertuj liczby pola id i zip 10001 stają się liczbami, a 02134 pozostaje tekstem.

Kroki

  1. Wklej CSV albo przeciągnij plik .csv, .tsv, .txt lub .json.
  2. Sprawdź opcję „Pierwszy wiersz to nagłówek”, separator i opcję „Konwertuj liczby”. Wybierz wcięcie JSON: 2 spacje, tabulator lub zminifikowany.
  3. Skopiuj wynik albo pobierz go jako plik .json.

Zachowuj liczby jako tekst

Liczby w JSON nie mogą mieć zer wiodących, więc 02134 nie jest poprawną liczbą JSON. Kody pocztowe, numery telefonów i kody produktów muszą pozostać tekstem, inaczej zero zniknie. Przy włączonej opcji Konwertuj liczby narzędzie zamienia 10001 na liczbę, ale 02134 zostawia jako ciąg znaków. Opcja jest domyślnie wyłączona. Konwertuje tylko wartości z kropką jako znakiem dziesiętnym, więc 1,5 w pliku ze średnikami pozostaje takie, jak wpisano.

Długie identyfikatory też wymagają uwagi. JavaScript, który obsługuje większość JSON w przeglądarce, przechowuje liczby jako 64-bitowe liczby zmiennoprzecinkowe. Liczby całkowite są dokładne tylko do 9 007 199 254 740 991, czyli do 2 do potęgi 53 minus 1. Liczba 12345678901234567890 staje się 12345678901234567000, gdy program w JavaScript ją odczyta. Narzędzie zapisuje cyfry tak, jak wpisano, ale program parsujący JSON w JavaScript je zaokrągli. Przechowuj identyfikatory jako ciągi znaków. Formatuj JSON też zachowuje takie liczby dokładnie tak, jak wpisano, i informuje, ile ich zachowało.

Zagnieżdżony JSON i powrót do CSV

CSV jest płaski, a JSON może być zagnieżdżony. Konwersja JSON na CSV tworzy jedną kolumnę dla każdego klucza we wszystkich obiektach, w kolejności, w jakiej każdy klucz pojawia się po raz pierwszy. Zagnieżdżony obiekt lub lista trafia do komórki jako tekst JSON, null staje się pustą komórką, a true i false zapisuje się jako słowa. Wiersze są łączone znakami CRLF, a pole ujmuje się w cudzysłowy tylko wtedy, gdy zawiera separator, cudzysłów, łamanie wiersza lub spacje na którymś z końców.

Dane zaczynające się od [ lub { są odczytywane jako JSON. Przycisk z etykietą CSV → JSON lub JSON → CSV zmienia kierunek. W kierunku JSON → CSV opcje wyjścia pokazują menu Separator i opcję Dla Excela.

Konwersja w obie strony traci informacje. Null i pusty ciąg znaków stają się pustą komórką, a zagnieżdżenie nie wraca, więc zachowaj oryginalny JSON, jeśli potrzebujesz jego struktury.

Excel, UTF-8 i znacznik kolejności bajtów (BOM)

Plik CSV to bajty, a czytnik musi znać kodowanie. UTF-8 obsługuje litery z diakrytykami i inne alfabety. Znacznik kolejności bajtów (BOM), trzy bajty na początku pliku, oznacza plik jako UTF-8. Bez niego niektóre programy arkuszy kalkulacyjnych odczytują plik w lokalnej stronie kodowej i litery z akcentami zamieniają się w dziwne znaki. Arkusze często też zamieniają 02134 na 2134, gdy otwierają CSV.

Opcja Dla Excela dodaje znacznik BOM tylko do pobranego pliku CSV, nigdy do skopiowanego tekstu, i tylko w kierunku JSON → CSV. Czytnik usuwa znacznik BOM z danych wejściowych, więc plik, który go już ma, konwertuje się bez błędu.

Przypadki brzegowe

  • Wiersze o różnej długości. Przy włączonym nagłówku krótki wiersz jest uzupełniany pustymi wartościami, a dłuższy zachowuje nadmiarowe wartości jako column_N. Wynik podaje, ile wierszy różni się od nagłówka.
  • Powtórzone lub puste nagłówki. Powtórzona nazwa dostaje _2, _3 itd., a pusta nazwa staje się column_N. Obie zmiany zapobiegają nadpisywaniu się dwóch kluczy.
  • Typograficzne cudzysłowy. Cudzysłowy typograficzne z edytora tekstu nie są cudzysłowami CSV, więc pole takie jak “Smith, Ann” rozdziela się przy przecinku. Najpierw je wyprostuj, używając Popraw wklejony tekst lub postępując zgodnie z opisem w przewodniku o cudzysłowach typograficznych.
  • Łamania wierszy w cudzysłowach. Pole rozciągające się na dwa wiersze to jeden rekord, ale Usuwanie zduplikowanych linii dzieli dane wejściowe przy każdym łamaniu wiersza, więc potraktuje obie połowy jako osobne wiersze. Zamień na JSON i porównaj obiekty albo sprawdź ręcznie. Narzędzie pozostaje przydatne dla list z jedną wartością w wierszu.
  • Duże pliki. Pole wyniku pokazuje pierwsze 100 000 znaków, ale Kopiuj i pobieranie obejmują cały wynik.
  • Nieprawidłowy JSON. Konwerter podaje wiersz i kolumnę błędu, z karetką pod znakiem. Formatuj JSON wyjaśnia typowe pomyłki, a przewodnik o błędach JSON omawia je szczegółowo.

Dodatkowe spacje wokół pól, puste wiersze w środku pliku i niespójnie użyte cudzysłowy powodują większość problemów z CSV, zanim w ogóle zacznie mieć znaczenie separator. Najpierw wyczyść CSV, a potem konwertuj.

Przetłumaczone z Wersja angielska przy wsparciu AI.

Komentarze

    Brak komentarzy. Bądź pierwszy.

    Twoja ocena (opcjonalnie)

    Twój e-mail nigdy nie jest pokazywany ani zapisywany.

    Okładka: How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 strony o przewagach człowieka: ekonomicznych i strategicznych, które pozostają rzadkie, gdy AI potrafi wykonać większość pracy umysłowej.

    $3.84Kup na GumroadPo angielsku