Otwórz lub wklej plik CSV, a JSON pojawi się obok opcji i będzie się zmieniał razem z nimi. Domyślnie każdy wiersz staje się obiektem z kluczami w postaci nazw kolumn; tablicę tablic, obiekt z tablicami kolumn albo JSON Lines wybierz wtedy, gdy kod odbierający dane oczekuje takiej struktury. Każda wartość domyślnie pozostaje ciągiem znaków, więc 00731 i 20-cyfrowe identyfikatory trafiają do wyniku dokładnie w tej samej postaci; rozpoznawanie liczb włącz tylko wtedy, gdy kolumna ma stać się liczbami JSON i wartościami true/false. Do plików konfiguracyjnych narzędzie CSV do YAML zapisze te same wiersze jako YAML. Plik jest konwertowany w Twojej przeglądarce i nigdy nie jest wysyłany na serwer.
Jak przekonwertować CSV do JSON
- Otwórz plik
.csv,.tsvlub.txt, upuść go na narzędzie albo wklej wiersze. Ogranicznik i znacznik BOM dla UTF-8 lub UTF-16 są wykrywane automatycznie; inny ogranicznik lub starsze kodowanie, np. Windows-1250, Windows-1252 czy Shift_JIS, wybierzesz w sekcji Ustawienia importu. - Wybierz Struktura JSON. Podgląd pokazuje pierwsze 200 wierszy dokładnie takiego wyniku, jaki znajdzie się w pobranym pliku.
- Ustaw Typy wartości, Puste komórki, zagnieżdżanie i wcięcia, a potem kliknij Pobierz JSON lub Kopiuj.
Aby przekonwertować wiele plików z tymi samymi ustawieniami, wybierz Tryb wsadowy: konwertuj kilka plików i zaznacz je razem: każdy plik zostanie przekonwertowany po kolei, a wyniki pobierzesz jako jeden plik ZIP.
Opcje JSON: obiekty, tablice lub JSON Lines
| Tablica obiektów (jeden na wiersz) | Jeden obiekt na wiersz, z kluczami z nagłówka: [{"sku": "00731", …}]. Taką strukturę oczekuje większość interfejsów API i kodu JavaScript. |
|---|---|
| Tablica tablic (najpierw nagłówek) | Najpierw wiersz nagłówka, potem każdy wiersz jako lista. Najmniejszy wynik; kolejność kolumn jest zapisana jawnie. |
| Obiekt z tablicami kolumn | {"sku": ["00731", "00732"], …} – wygodne dla bibliotek do wykresów i narzędzi pracujących na ramkach danych. |
| JSON Lines (jeden obiekt w wierszu) | Jeden obiekt JSON w każdym wierszu (JSON Lines), bez otaczającej tablicy. Pasuje do potoków logów, ładowania danych do BigQuery i przetwarzania wiersz po wierszu. |
| Zachowaj wszystkie wartości jako tekst | Każda komórka staje się ciągiem znaków JSON, dokładnie w postaci zapisanej w pliku. To ustawienie domyślne. |
| Rozpoznawaj liczby i true/false | Kolumna staje się liczbami JSON tylko wtedy, gdy każda niepusta wartość jest zwykłą liczbą, która przetrwa konwersję: bez zer wiodących, z najwyżej 15 cyframi znaczącymi, bez przecinka dziesiętnego. Kolumny z true/false stają się wartościami logicznymi. Daty pozostają ciągami znaków. |
| Puste komórki | Zapisz "", null albo pomiń klucz w danym obiekcie. |
| Zagnieżdżaj nazwy kolumn z kropkami | user.name i user.email stają się {"user": {"name": …, "email": …}}. Jeśli nazwa jest jednocześnie wartością i rodzicem (user oraz user.name), te kolumny pozostają płaskie, a narzędzie Cię o tym informuje. |
Nagłówki, wartości w cudzysłowie i identyfikatory w JSON
- Przecinki, cudzysłowy (
"") i podziały wiersza wewnątrz wartości w cudzysłowie są odczytywane zgodnie z RFC 4180 i zapisywane jako zwykłe sekwencje ucieczki JSON (\n,\"). - Nazwy nagłówków są używane dokładnie tak, jak je zapisano, łącznie ze spacjami, polskimi znakami i pismami niełacińskimi. Pusty nagłówek staje się
Column 3, a powtórzony –name (2), więc żadna wartość nie zostaje nadpisana. - Nagłówki takie jak
__proto__czyconstructorsą zapisywane jako zwykłe klucze. - Wiersz z większą liczbą wartości niż nagłówek dostaje dodatkowe klucze
Column 4,Column 5…; krótszy wiersz dostaje puste wartości. Nic nie jest pomijane. - Wynik z typami nigdy nie zamienia
0012na12ani 19-cyfrowego numeru zamówienia na zaokrągloną liczbę zmiennoprzecinkową: taka kolumna pozostaje tekstem.
Typowe problemy przy konwersji CSV do JSON
- Wszystko trafia do jednego klucza. Ogranicznik został źle rozpoznany; w ustawieniach importu wybierz przecinek, średnik, tabulator lub kreskę pionową i otwórz plik ponownie.
- Polskie znaki wyglądają jak é lub podobne. Plik nie jest zapisany w UTF-8. Wybierz jego kodowanie w ustawieniach importu (dla starszych eksportów z polskiego Excela często Windows-1250).
- Kolumna liczbowa pozostała tekstem. Co najmniej jedna wartość nie jest zwykłą liczbą – np.
1,5,12 kgalbo wartość z zerem wiodącym. Wyszukaj ją w tej kolumnie w przeglądarce CSV. - Błąd cudzysłowu wskazuje konkretny rekord. W tym rekordzie otwarto cudzysłów, którego nigdy nie zamknięto. Popraw go w edytorze CSV albo sprawdź eksport z systemu źródłowego.
Limity i prywatność
Pliki do 25 MB, 100 000 wierszy lub 2 mln komórek otwierają się z podglądem na żywo. Większe pliki są konwertowane strumieniowo: plik jest odczytywany dwukrotnie we fragmentach (raz, aby poznać kolumny i typy, i drugi raz, aby zapisać wynik), zamiast podglądu wyświetla się komunikat, a pobrany plik obejmuje wszystkie wiersze. Pojedynczy plik wynikowy może mieć najwyżej 4 GB.
Konwersja odbywa się w tle w tej karcie, więc strona cały czas reaguje, a Anuluj przerywa pracę. Plik CSV nigdy nie jest wysyłany na serwer.
Przykład: lista produktów jako obiekty JSON
Lista produktów z kodem SKU z zerem wiodącym i przecinkiem w cudzysłowie, przekonwertowana z ustawieniami domyślnymi (wszystko jako tekst, tablica obiektów, wcięcie 2 spacji). Po włączeniu opcji Rozpoznawaj liczby i true/false pole price staje się 34.9, a in_stock – true, natomiast sku pozostaje "00731".
sku,name,price,in_stock 00731,"Desk lamp, brass",34.90,true 00732,Cable tidy,4.50,false
[
{
"sku": "00731",
"name": "Desk lamp, brass",
"price": "34.90",
"in_stock": "true"
},
{
"sku": "00732",
"name": "Cable tidy",
"price": "4.50",
"in_stock": "false"
}
]Pytania i odpowiedzi
Dlaczego liczby są domyślnie w cudzysłowie?
Bo CSV nie ma typów: 00731, 1.50 i 2024-03-01 to po prostu tekst. Zachowanie ich jako ciągów znaków gwarantuje, że JSON zawiera dokładnie to, co plik. Rozpoznawanie liczb włącz, gdy wiesz, że kolumna zawiera ilości.
Czy mogę tu przekonwertować JSON z powrotem do CSV?
Jeszcze nie. Ta strona konwertuje wyłącznie CSV i TSV do JSON.
Czy JSON Lines to to samo co NDJSON?
W praktyce tak: oba oznaczają jedną kompletną wartość JSON w każdym wierszu, z wierszami rozdzielonymi znakami nowego wiersza.