W tym artykule
Czym jest JSON Lines?
JSON Lines (znany również jako JSONL lub Newline-Delimited JSON, NDJSON) to format tekstowy, w ktorym każdy wiersz jest poprawnym obiektem JSON. W przeciwieństwie do zwykłego JSON, ktory opakowuje wszystko w tablice, JSONL umieszcza jeden rekord w wierszu bez otaczajacych nawiasow. Dzięki temu jest idealny do streamingu, dopisywania i przetwarzania dużych zbiorow danych wiersz po wierszu.
Typowy plik JSONL wygląda tak: każdy wiersz zawiera kompletny obiekt JSON z własnymi kluczami i wartościami. Nie ma przecinkow między wierszami ani otaczajacej tablicy. Ta prostota czyni format potężnym dla potokow danych, plikow logow i zbiorow danych machine learning.
Dlaczego JSONL jest ważny
JSONL stal sie preferowanym formatem dla kilku ważnych przypadkow użycia we współczesnej inżynierii danych i platformach chmurowych.
- Przetwarzanie strumieniowe -- poniewaz każdy wiersz jest niezależny, możesz przetwarzac pliki wiersz po wierszu bez ładowania całego zestawu danych do pamięci, co jest krytyczne dla plikow wielogigabajtowych
- Importy BigQuery i chmurowe -- Google BigQuery, Amazon Athena i inne chmurowe hurtownie danych natywnie obsługują JSONL do ładowania danych, czyniacs go standardowym formatem importu danych chmurowych
- Zbiory danych machine learning -- wiele frameworkow ML, w tym Hugging Face, fine-tuning OpenAI i trening BERT, oczekuje danych w formacie JSONL z jednym przykladem na wiersz
- Pliki logow i strumienie zdarzen -- logi aplikacji często używają JSONL, poniewaz nowe zdarzenia moga byc dopisywane do pliku bez modyfikowania istniejących treści lub utrzymywania składni tablicy
Wypróbuj za darmo — bez rejestracji
Konwertuj CSV do JSONL →Konwersja CSV do JSONL
Konwersja CSV do JSONL mapuje każdy wiersz w pliku CSV na obiekt JSON, gdzie nagłówki kolumn staja sie kluczami.
- Nagłówki jako klucze -- pierwszy wiersz pliku CSV dostarcza nazw właściwości dla każdego obiektu JSON, wiec nagłówki kolumn powinny byc czyste i spojne
- Wykrywanie separatora -- konwerter obsługuje separatory przecinek, średnik, tabulator i pipe, automatycznie wykrywając format lub pozwalając go jawnie okreslics
- Wnioskowanie typow -- wartości numeryczne sa konwertowane na liczby JSON zamiast łańcuchów, a puste komorki moga byc wyświetlane jako null lub całkowicie pominiete w zależności od preferencji
Często zadawane pytania
Jaka jest różnica między JSONL a zwykłym JSON?
Zwykły JSON opakowuje wszystkie rekordy w tablice z nawiasami kwadratowymi i rozdziela je przecinkami. JSONL umieszcza jeden obiekt JSON na wiersz bez opakowania tablicowego i bez przecinkow między rekordami. Oznacza to, ze możesz dopisywac do pliku JSONL bez modyfikowania istniejących treści, przetwarzac go wiersz po wierszu bez pełnego parsera i streamowac go bez buforowania całego pliku.
Kiedy powinienem używać JSONL zamiast CSV?
Używaj JSONL, gdy dane maja zagnieżdżone struktury, niespojne kolumny lub musza byc konsumowane przez API i usługi chmurowe. CSV jest lepszy dla prostych danych tabelarycznych otwieranych w arkuszach kalkulacyjnych. JSONL zachowuje typy danych (liczby, boolean, null), podczas gdy CSV traktuje wszystko jako tekst. JSONL obsługuje również wartości zawierające przecinki i znaki nowej linii bez problemow z ucieczka.
Jakie rozszerzenie pliku powinienem używać?
Najczęściej spotykane rozszerzenia to .jsonl i .ndjson. Niektore narzędzia akceptuja tez .json z jednym obiektem na wiersz. Używaj .jsonl dla jasności, poniewaz od razu mowi każdemu patrzacemu na plik, ze jest on rozdzielany znakami nowej linii, a nie standardowym JSON. BigQuery i większość narzędzi chmurowych akceptuje wszystkie trzy rozszerzenia.
Czy pliki JSONL moga byc streamowane?
Tak, to jedna z głównych zalet JSONL. Poniewaz każdy wiersz jest niezależny i samodzielny, możesz czytac i przetwarzac jeden wiersz na raz za pomoca prostej logiki readline w każdym języku programowania. To sprawia, ze JSONL jest idealny do przetwarzania zbiorow danych zbyt dużych, by zmiescic sie w pamięci, w przeciwieństwie do zwykłego JSON, ktory wymaga parsowania pełnej struktury tablicy.