Generator testowego JSON API
Generuj fałszywe dane JSON dla dowolnego endpointu REST: użytkownicy, produkty, zamówienia. Kopiuj lub pobierz plik JSON. Idealne do frontendowego prototypowania i testów jednostkowych. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
| Typ | Attributes |
|---|---|
| users | ID 8 422 UUID c09129ee-b419-443a-8367-97ea50190805 Nazwa Morgan Martin E-mail Nazwa użytkownika ember_9435 Status inactive Data utworzenia 2026-07-08T17:37:51+00:00 Cena 1 104,69 Tagi orbitembercloud Is Verified Nie |
| users | ID 6 220 UUID 2be71118-df2f-45b7-8832-2272e7edb566 Nazwa Alex Brown E-mail Nazwa użytkownika luna_2767 Status inactive Data utworzenia 2026-01-01T01:19:27+00:00 Cena 1 319,07 Tagi orbitbravoatlas Is Verified Tak |
| users | ID 750 UUID d90ee3a2-7c68-4819-9579-628064df5d6d Nazwa Alex Nowak E-mail Nazwa użytkownika river_7600 Status inactive Data utworzenia 2026-07-02T20:57:48+00:00 Cena 2 046,15 Tagi cloudatlaspulse Is Verified Nie |
| users | ID 5 422 UUID fd1af53a-1dc6-4d29-a682-4bb9b59cd793 Nazwa Chris Smith E-mail Nazwa użytkownika atlas_7717 Status pending Data utworzenia 2025-11-28T08:53:40+00:00 Cena 1 413,94 Tagi orbitzenalpha Is Verified Tak |
| users | ID 8 138 UUID 0609b677-93d3-448b-bca3-e9ff935e0d38 Nazwa Alex Martin E-mail Nazwa użytkownika luna_8124 Status pending Data utworzenia 2026-09-08T10:45:23+00:00 Cena 1 690,25 Tagi alphaalphaalpha Is Verified Nie |
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator testowego JSON API – mock dane REST bez backendu
Podczas prototypowania frontendu backend często jeszcze nie istnieje. Narzędzie generuje realistyczne dane JSON dla typowych endpointów REST: listy użytkowników, produktów, zamówień, artykułów. Możesz skonfigurować schemat, liczbę rekordów i typy pól – wynik to gotowy plik JSON lub response mock.
Dostępne schematy danych
Użytkownicy: id, name, email, avatar, role, createdAt. Produkty: id, title, price, category, stock, rating. Zamówienia: id, userId, items[], total, status, date. Artykuły/posty: id, title, body, author, tags[], publishedAt. Własny schemat: definiujesz pola i typy (string, number, boolean, date, uuid, enum).
Typy generowanych wartości
Realistic fake data: imiona (Faker.js locale pl), adresy email w formacie [email protected], UUID v4, daty ISO 8601, ceny z groszami, zakresy liczbowe (min/max), lorem ipsum (PL/EN), kolory HEX, współrzędne GPS (PL zakres), numery telefonu +48.
Formaty wyjściowe
JSON array: [{...},{...}]. Paginated: {data:[...], total:N, page:1, per_page:10}. Nested (relacje): user.orders[]. JSON Lines (NDJSON): każdy rekord w osobnej linii – dobry dla logów i streamingu. TypeScript interfaces: automatycznie generowany typ na podstawie schematu.
Integracja z narzędziami dev
JSON Server: serwer REST na bazie pliku JSON (npm install -g json-server). MSW (Mock Service Worker): interceptuje żądania w przeglądarce. Postman / Insomnia: import jako collection. Storybook: dane jako props dla stories. Vitest/Jest: import JSON jako dane testowe.
Jak działa generator mock JSON API
Narzędzie działa w trzech etapach: definicja schematu, mapowanie typów pól na generatory wartości i serializacja do wybranego formatu wyjściowego. Schemat to lista pól z typem — pole typu uuid trafia do generatora identyfikatorów w wersji 4, pole typu date do generatora znaczników czasu w formacie ISO 8601, a pole typu enum losuje jedną wartość z podanej listy wariantów. Liczba rekordów mówi tylko, ile razy generator przejdzie tę samą definicję. Nie ma tu backendu ani bazy danych: cała praca odbywa się w przeglądarce, a wynik trafia do schowka albo do pliku.
Kolejność generowania ma znaczenie przy relacjach. Najpierw powstają rekordy nadrzędne, na przykład użytkownicy, a dopiero potem rekordy zależne, na przykład zamówienia. Pole userId w zamówieniu dostaje identyfikator wylosowany wcześniej na liście użytkowników, więc klucz obcy wskazuje istniejący rekord, a nie dowolną liczbę. Przy formacie nested tablica items[] jest budowana wewnątrz rekordu zamówienia, dzięki czemu struktura pozostaje poprawna także wtedy, gdy przekazujesz ją dalej jako props komponentu.
Ostatni etap to pakowanie zbioru w format. Zwykła tablica to lista rekordów jedna po drugiej, format paginated dokłada kopertę z polami data, total, page i per_page, a NDJSON zapisuje każdy rekord w osobnej linii. Ten sam zbiór danych wykorzystasz więc zarówno w teście jednostkowym, jak i jako plik źródłowy dla json-server, bez ręcznego przepisywania i dopasowywania nazw pól.
Przykład krok po kroku: zamówienia w formacie paginated
- Wybierz schemat zamówienia. Rekord składa się z pól id, userId, items[], total, status i date. Zostaw domyślne typy: uuid dla id, liczba dla userId, tablica obiektów dla items[], liczba z groszami dla total, enum dla status i data ISO 8601 dla date.
- Ustaw liczbę rekordów większą niż 10, bo tyle wynosi per_page w formacie paginated. Tylko wtedy zobaczysz zachowanie drugiej i kolejnej strony zamiast jednej pełnej odpowiedzi.
- Włącz relację z użytkownikami. Pole userId przyjmie identyfikatory wygenerowane na liście użytkowników, więc pobranie zamówienia i użytkownika o zgodnym id da spójną parę danych.
- Wybierz format paginated. Otrzymasz kopertę w postaci data, total oraz page równe 1 i per_page równe 10. Liczba stron to total podzielone przez 10 zaokrąglone w górę; gdy total nie jest wielokrotnością 10, ostatnia strona zawiera mniej niż 10 rekordów.
- Sprawdź pole items[]. Każdy element tablicy ma własny zestaw pól, na przykład nazwę produktu i ilość, a nie odwołanie do indeksu spoza rekordu. Struktura zagnieżdżona jest gotowa do wstawienia w komponent listy.
- Skopiuj wynik i podmień źródło danych w kodzie. Ten sam plik wrzucasz jako db.json do json-server albo zwracasz w handlerze MSW, a aplikacja nie wymaga żadnych zmian poza adresem endpointu.
Typy pól i odpowiadające im generatory
| Typ pola w schemacie | Co podstawia generator | Postać wartości |
|---|---|---|
| string | lorem ipsum w wariancie PL lub EN | ciąg tekstowy o losowej długości |
| number z zakresem | losowa liczba z przedziału min i max | wartość między dolną i górną granicą |
| number dla ceny | kwota z groszami | liczba z dwoma miejscami po kropce w JSON |
| boolean | losowa wartość logiczna | true albo false |
| date | znacznik czasu ISO 8601 | RRRR-MM-DDThh:mm:ss |
| uuid | identyfikator UUID w wersji 4 | 36 znaków w zapisie 8-4-4-4-12 |
| enum | losowy wariant z podanej listy | jedna z zadeklarowanych opcji |
| adres w formacie [email protected] | login, małpa, domena |
Praktyczne wskazówki przed wklejeniem danych do projektu
- Trzymaj schemat blisko kontraktu API. Nazwy pól i ich typy przenieś z dokumentacji endpointu, którego jeszcze nie ma. Dzięki temu po podmianie mocka na prawdziwy backend nie trzeba poprawiać komponentów ani zapytań.
- Ustaw liczbę rekordów większą niż per_page. Paginacja testowana na jednej stronie wyników niczego nie sprawdza. Dopiero druga strona pokazuje, czy klient poprawnie składa zapytanie i czy nie gubi rekordów z ostatniej, niepełnej strony.
- Generuj rekordy zależne razem z nadrzędnymi. Zamówienie bez wygenerowanej listy użytkowników da klucze obce wskazujące na nic. Najpierw użytkownicy, potem zamówienia i pozycje w items[].
- Do testów jednostkowych wybierz TypeScript interfaces. Typ wygenerowany z tego samego schematu co dane pozwala złapać rozjazd nazw pól już na etapie kompilacji, a nie dopiero w asercji.
- Zapisz wynik w repozytorium. Kolejne uruchomienie generatora daje inny zestaw wartości. Jeśli testy mają być powtarzalne, korzystaj z zapisanego pliku, a nie z danych generowanych za każdym razem od nowa.
Ograniczenia i pułapki mocka
- Brak logiki biznesowej. Generator nie sprawdza, czy suma pozycji w items[] zgadza się z polem total ani czy status jest zgodny z datą. Wartości są poprawne technicznie, ale nie muszą być sensowne jako całość.
- Dane nie są rzeczywiste. Adresy e-mail, numery telefonu i współrzędne trafiają w format, ale nie odpowiadają istniejącym osobom ani miejscom. Nie używaj ich do korespondencji ani jako danych produkcyjnych.
- Brak stanu po stronie serwera. Mock to plik, a nie aplikacja. Żądanie typu POST nie doda rekordu do zbioru, a kolejne pobranie zwróci dokładnie tę samą zawartość, którą wygenerowałeś.
- Relacje są jednostronne. Klucz obcy w zamówieniu wskazuje użytkownika, ale nie tworzy automatycznie zagnieżdżonej odpowiedzi po jego stronie. Taki widok uzyskasz tylko przy formacie nested.
- Powtarzalność zależy od Ciebie. Bez skopiowania wyniku nie ma sposobu na odtworzenie identycznych rekordów przy następnym uruchomieniu, co utrudnia porównywanie wyników testów między gałęziami.
Najczęstsze pytania
Czym różni się od JSONPlaceholder?
JSONPlaceholder (jsonplaceholder.typicode.com) to publiczny serwer z gotowymi endpointami (ale stałymi danymi). To narzędzie: generuje nowe dane lokalnie, obsługuje własne schematy, nie wymaga internetu, dane można pobrać i używać offline.
Jak używać mock JSON z React?
import data from "./users.json". Lub: const [users, setUsers] = useState([]); useEffect(()=>fetch("/api/users").then(r=>r.json()).then(setUsers),[]). Z MSW: serwer przechwytuje /api/users i zwraca wygenerowany JSON.
Ile rekordów można wygenerować?
Narzędzie generuje do 10 000 rekordów w przeglądarce (JavaScript). Dla większych zestawów danych: pobierz i użyj node-generate-data lub Faker.js w skrypcie Node.
Czy dane są losowe przy każdym odświeżeniu?
Domyślnie tak. Możesz ustawić seed (ziarno) dla powtarzalnych danych – przydatne gdy chcesz te same dane w testach. Seed determinuje kolejność i wartości pseudolosowego generatora (Mersenne Twister).
Jak generować zagnieżdżone relacje (user → orders)?
W interfejsie wybierz schemat "Users with Orders". Lub ręcznie: zdefiniuj pole orders jako array[Order]. Narzędzie generuje spójne relacje (userId w zamówieniach pasuje do id użytkowników).
Jak zrobić mock API bez backendu na potrzeby frontendu?
Wygeneruj plik JSON z wybranym schematem i liczbą rekordów, a następnie podaj go jako źródło danych w narzędziu takim jak json-server albo zwróć go w handlerze MSW. Frontend widzi wtedy zwykłe odpowiedzi HTTP i nie wymaga żadnych zmian w momencie podłączenia prawdziwego API.
Czy generator obsługuje relacje między rekordami?
Tak, przy generowaniu zamówień pole userId wskazuje identyfikatory z listy użytkowników powstałej w tym samym przebiegu. Zależność działa jednak tylko w tę stronę, dlatego widok użytkownika z jego zamówieniami wymaga dodatkowo formatu nested.
Jak podłączyć wygenerowany plik do json-server?
Zapisz wynik jako db.json, a potem uruchom json-server na tym pliku. Każdy klucz najwyższego poziomu staje się osobnym zasobem REST dostępnym pod własnym adresem.
Czym różni się NDJSON od zwykłej tablicy JSON?
W zwykłej tablicy rekordy są elementami jednej struktury, którą trzeba wczytać w całości. NDJSON zapisuje każdy rekord w osobnej linii, więc można przetwarzać dane strumieniowo, linia po linii, co dobrze sprawdza się przy logach i dużych zbiorach.
Czy dane z generatora nadają się do testów automatycznych?
Tak, jako dane wejściowe dla testów komponentów i funkcji przetwarzających odpowiedź z API. Pamiętaj jednak, że każdy przebieg daje inne wartości, więc dla powtarzalnych asercji zapisz wygenerowany plik w repozytorium zamiast generować go w trakcie testu.
Powiązane narzędzia: walidator JSON, konwerter JSON na CSV i konwerter cURL na Fetch API.