JSON 產生器
免費線上 JSON 產生器,無需撰寫範本即可一鍵產生隨機 Mock 資料。內建 13 種常用欄位類型與範例 Schema,支援自訂欄位名稱、數量範圍與陣列輸出,適合前端聯調、API 測試與樣本資料構造。
相關推薦
關於 JSON 產生器與 Mock 測試資料
JSON 產生器(JSON Generator / JSON Mock 工具)是一種透過宣告式欄位定義,一鍵產出符合指定結構的隨機 JSON 資料的工具。它通常面向前端開發、後端聯調和自動化測試三大場景,目的是讓開發者在「API 未就緒」或「需要批次造資料」時,無需手寫迴圈和隨機函式,就能得到語法合法、結構可控的測試資料。
市面上常見的 JSON 產生器分兩類:第一類是範本語法型(如 json-generator.com 的 Handlebars 風格 {{repeat(5)}}、extendsclass 的 random(1,100) 函式式),靈活度最高但需要學習範本語法;第二類是視覺化欄位建構型(本工具採用),透過 GUI 新增欄位並選擇類型,所見即所得,門檻最低,更適合產品、測試、前端非全端工程師。
Mock 資料(Mock Data)是指用於模擬真實業務資料的偽造資料,必須滿足三個特徵:結構與真實 API 一致、欄位值有合理範圍、涵蓋典型場景。優秀的 Mock 資料能讓前端在 API 開發前就完成 90% 的頁面工作,也能讓自動化測試穩定執行而不依賴真實後端環境。
本工具內建的 13 種欄位類型涵蓋了大多數 API 測試場景:String / Integer / Number / Boolean 用於基礎值類型;Email / Name / UUID / Date / URL / Phone 用於業務欄位;Paragraph 用於長文字;Enum 用於狀態機 / 角色 / 等級等受控離散值;Array 用於列表欄位。所有產生過程完全在瀏覽器本地透過 JavaScript 完成,不依賴任何網路請求。
隨機性是 JSON 產生器的核心:UUID 欄位遵循 RFC 4122 v4 規範(含正確的版本位與變體位)、Email 由內建常見名 + 測試網域組合、日期在 2020-01-01 到當前時間之間隨機取樣。如果你的專案需要「可重現」的測試資料(例如回歸測試),建議產生一次後下載為 .json 檔案儲存作為 fixture 反覆使用。
適用場景
- 前端開發元件渲染時需要穩定可重複的 Mock 資料,構造使用者列表、商品卡片、訂單詳情等場景
- 後端 API 尚未開發完成,前端工程師需要造資料聯調頁面,避免等待後端回傳
- QA 撰寫 API 自動化測試案例時,批次構造不同欄位值的資料驅動測試場景
- 撰寫 API 文件、Swagger / OpenAPI 範例時,用產生器快速產出符合結構的請求 / 回應範例
- 壓測和效能測試前準備大量結構化測試資料,驗證系統在高併發下的穩定性
- 資料庫遷移腳本、資料清洗工具開發時構造樣本 JSON 驗證業務邏輯
- 教學與展示場景:技術部落格、PPT 截圖、教育訓練教材中需要結構整齊的 JSON 範例
- 前端表單驗證、本地快取邏輯撰寫時,構造邊界值測試(極小 / 極大 / 空 / 異常類型)
使用方法
- 在左側「模式建構器」中查看預設範例 Schema(id / name / email / age / active / createdAt / bio 共 7 欄位),或點選「+」新增自訂欄位
- 為每個欄位設定欄位名稱(自訂)和欄位類型(13 種下拉選單);數值與段落類型可填 min / max,Enum 類型可填逗號分隔的候選值
- 勾選「產生為陣列」並設定數量(1-1000),或取消勾選只產生單筆 JSON 物件
- 點選右上角「產生」按鈕,右側編輯器即時顯示格式化好的 JSON 結果,並顯示欄位數和產生筆數
- 點選「複製」把結果貼到程式碼 / API 工具,或點選「下載」儲存為 generated.json 檔案
功能特點
- 13 種內建欄位類型:String / Integer / Number / Boolean / Email / Name / UUID / Date / URL / Phone / Paragraph / Enum / Array,開箱即用無需記憶範本語法
- 視覺化欄位建構器:透過圖形介面新增刪除欄位、設定欄位名稱與類型,所見即所得,無需手寫 JSON 範本
- 數值與段落範圍控制:Integer、Number 與 Paragraph 類型支援自訂最小值與最大值,產生更貼近業務的資料
- Enum 自訂列舉值:可輸入逗號分隔的值清單(如 admin,user,guest),產生受控的離散選項
- 單物件 / 陣列一鍵切換:透過勾選「產生為陣列」+ 數量輸入(1-1000),可在單筆 JSON 與陣列形式之間自由切換
- 範例 Schema 快速載入:內建 7 欄位範例(id / name / email / age / active / createdAt / bio),點擊即可產生完整樣本
- 程式碼高亮輸出面板:右側 CodeMirror 編輯器即時顯示產生結果,支援 JSON 語法高亮、行號與唯讀瀏覽
- 一鍵複製與下載:產生結果可一鍵複製到剪貼簿,也可直接下載為 generated.json 檔案
- 純本地瀏覽器執行:所有欄位構造與資料產生完全在你的瀏覽器內完成,資料零上傳,敏感業務欄位可放心使用
- 桌面與行動端適配:PC 端左右分欄可調,行動端自動切換輸入/輸出分頁,操作順手
程式碼範例
JavaScript:用 fetch + 產生資料做 API 聯調
javascript把產生器下載的 generated.json 放到本地 mock 目錄,被 fetch 攔截回傳,用於前端獨立聯調。
// 把 generated.json 放到 /public/mock/users.json
// 然後用 fetch 獲取作為 Mock 資料
async function fetchMockUsers() {
const res = await fetch('/mock/users.json');
const users = await res.json();
console.log(`載入了 ${users.length} 個使用者`);
return users;
}
// 直接內嵌到程式碼裡使用(適合測試案例)
const mockUsers = [
{ id: 1, name: 'Jennifer Martinez', email: 'jennifer.martinez382@example.com', age: 42, active: true },
{ id: 2, name: 'Robert Smith', email: 'robert.smith918@test.org', age: 67, active: false }
];
// 或在 Jest / Vitest 中作為 fixture 引入
import users from './fixtures/users.json';
test('渲染使用者列表', () => {
render(<UserList users={users} />);
expect(screen.getAllByRole('listitem')).toHaveLength(users.length);
});Python:用 Faker 函式庫做更複雜的 Mock 資料產生
python如果本工具的 13 種欄位類型不夠用,Python 的 Faker 函式庫支援 100+ 種本地化資料產生器,可與產生器配合使用。
# 安裝: pip install faker
from faker import Faker
import json
fake = Faker('zh_TW') # 中文本地化
# 產生單一使用者
def gen_user():
return {
"id": fake.random_int(min=1, max=99999),
"name": fake.name(),
"email": fake.email(),
"phone": fake.phone_number(),
"address": fake.address(),
"company": fake.company(),
"created_at": fake.iso8601()
}
# 批次產生 100 筆並寫入 generated.json
users = [gen_user() for _ in range(100)]
with open('generated.json', 'w', encoding='utf-8') as f:
json.dump(users, f, ensure_ascii=False, indent=2)
print(f"已產生 {len(users)} 筆使用者資料")命令列:用 curl + jq 把產生資料 POST 到 API
bash壓測或初始化資料時,可用 curl 把產生器下載的 generated.json 直接 POST 到目標 API。
# 假設 generated.json 在當前目錄,目標 API 為 POST /api/users
# 批次初始化資料
for i in $(seq 1 10); do
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @generated.json | jq '.'
done
# 或者用 jq 抽取單筆再 POST
cat generated.json | jq '.[0]' | \
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @-常見問題
JSON 產生器是做什麼的?要怎麼用?
JSON 產生器用於一鍵產生符合指定結構的隨機 JSON 資料,常用於前端 Mock、API 聯調與自動化測試。使用方法:在左側 Schema 建構器中新增欄位並設定欄位名稱與類型(可選 min/max 範圍或列舉值),勾選「產生為陣列」並輸入數量,點選「產生」即可在右側看到結果,直接複製或下載即可使用。
支援哪些欄位類型?
內建 13 種常用欄位類型:String(隨機字串)、Integer(整數)、Number(小數)、Boolean(布林值)、Email(電子郵件)、Name(英文姓名)、UUID(符合 RFC 4122 v4 規範)、Date(ISO 8601 時間戳記)、URL(網址)、Phone(美式電話號碼)、Paragraph(多詞段落)、Enum(自訂列舉)、Array(字串陣列)。涵蓋絕大多數 API 測試場景。
如何自訂產生數量?能一次產生 1000 筆嗎?
勾選「產生為陣列」核選方塊後,在數量輸入框填入 1-1000 之間的任意整數,點選產生即可輸出對應數量的物件陣列。1000 筆是工具上限,已足以滿足絕大多數 API 壓測與批次構造場景;如需更多,可在本地腳本中迴圈呼叫或使用 Faker.js 等函式庫。
Enum 欄位怎麼用?能自訂值嗎?
把欄位類型切換為 Enum 後,會出現一個輸入框,按逗號分隔填寫候選值(如 admin,user,guest,或 high,medium,low),產生時隨機抽取其一。這非常適合構造角色、狀態、等級等受控離散欄位,避免每次手動寫死。
能控制數字和段落的取值範圍嗎?
可以。Integer、Number 類型支援填寫 min 和 max,工具會按該範圍產生隨機整數或小數(保留 2 位小數);Paragraph 類型同樣支援 min/max 控制詞數(例如 20-100 詞)。這讓產生的資料更貼近真實業務,避免出現 age=999999 這類明顯造假的值。
產生的 UUID 符合規範嗎?
符合。UUID 欄位按 RFC 4122 v4 規範產生,包含正確的版本位(4)與變體位(8/9/a/b),可直接作為資料庫主鍵、訂單號、追蹤 ID 等使用。
產生結果可以一鍵複製和下載嗎?
可以。點選工具列的「複製」按鈕即可把格式化好的 JSON 複製到剪貼簿;點選「下載」按鈕則會自動儲存為 generated.json 檔案,檔案名稱可在瀏覽器下載列表中查看,檔案內容與編輯器中顯示完全一致。
JSON 產生器與 JSON 格式化有什麼差別?
二者用途互補:JSON 產生器從零建立新的隨機 JSON 資料,用於測試和 Mock;JSON 格式化整理已有的 JSON 內容,用於美化和校驗。建議先用產生器拿到測試資料,再用格式化工具做進一步排版檢查或轉 TypeScript/Java 等程式碼結構。
產生的資料會上傳到伺服器嗎?安全嗎?
不會。所有欄位建構、隨機資料產生、複製下載操作完全在你的瀏覽器本地透過 JavaScript 執行,資料不會上傳到任何伺服器,也不會被記錄或快取。包含內部 API 欄位、未上線業務結構、敏感測試場景都可以放心使用,關閉頁面即清除。
怎麼把產生結果直接用於 API 測試?
複製產生結果後,可貼到 Postman / Apifox / Apipost 的 Body 區直接發送;或在 Jest / Mocha / Pytest 等測試框架中透過 JSON.parse 讀取作為 fixture;前端開發也可把下載的 generated.json 放到本地 mock 目錄下被 axios / fetch 攔截回傳。
產生的「姓名」和「電子郵件」是真實資料嗎?
不是真實資料。Name 欄位由內建英文姓 / 名庫隨機組合,Email 欄位組合名 + 姓 + 序號 + 測試網域(example.com / test.org 等),全部為虛構樣本,請勿用於真實業務驗證,也不要嘗試向產生的電子郵件地址發送郵件。
可以一次只產生 1 個物件而不是陣列嗎?
可以。取消勾選「產生為陣列」核選方塊即可輸出單一 JSON 物件(而非陣列),適合 API 單筆除錯、文件範例或單筆資料預覽;再次勾選並填入數量即可切回陣列模式。
故障排查
點選「產生」後提示「請至少新增一個欄位」
說明當前 Schema 中沒有任何欄位名稱(field.name)填寫有效的欄位。檢查左側欄位建構器:每行必須填寫欄位名稱才能參與產生,空欄位名稱會被自動略過。可以點選「+」新增欄位,或參考頂部「模式建構器」的範例 Schema 重新填入欄位名稱。
產生結果欄位順序與左側不一致
JSON 規範本身不保證欄位順序,但本工具會嚴格按照 Schema 中欄位從上到下的新增順序輸出。檢查左側欄位是否被意外刪除或重新新增;如果順序仍不對,重新整理頁面後按目標順序重新新增一次即可。
Enum 欄位產生總是空字串
Enum 欄位需要在輸入框中填寫逗號分隔的候選值(如 admin,user,guest),如果輸入框為空或只填了逗號,會得到空字串。確保至少填寫一個有效候選值,工具會在每次產生時隨機抽取其一。
數字欄位出現 NaN 或 undefined
通常是 min 和 max 輸入框留空或填了非數字。Integer/Number 欄位即使不填範圍也有預設值(0-100),但如果填了字母或負數等非法值可能導致異常。建議只填整數,或乾脆留空使用預設值。
Paragraph 欄位產生的句子不通順
Paragraph 類型使用內建 lorem 詞庫隨機組合,刻意不通順以避免與真實英文段落重複。如需更真實的文字,建議使用 Python Faker 函式庫或 Hugging Face 的文字產生 API;如果只是用於 UI 排版測試,lorem 段落已完全夠用。
下載的 generated.json 找不到檔案
點選「下載」後瀏覽器會在預設下載目錄儲存 generated.json。部分瀏覽器(特別是行動端)需要手動在下載列表中查找。如果使用 Safari,建議在偏好設定中查看下載位置;Chrome 使用者可直接在網址列旁的下載圖示查看。
想產生單筆 JSON 而不是陣列
取消勾選 Schema 建構器下方的「產生為陣列」核選方塊即可。取消後,無論數量輸入框填什麼,都只會輸出單一 JSON 物件 {},適合 API 單筆除錯、文件範例或單筆 fixture 儲存。
產生 1000 筆時頁面卡頓
1000 筆已接近瀏覽器單次繪製的上限。如果產生後右側編輯器捲動卡頓,建議:① 產生後立即點選「複製」或「下載」拿到資料後關閉頁面;② 或分批產生(如 500 + 500 後手動合併);③ 極致壓測場景建議直接用 Python Faker / Mock.js 等原生腳本。
術語表
- JSON
- JavaScript Object Notation,輕量級的資料交換格式,由鍵值對和陣列構成,是 Web API 和前後端資料傳輸的事實標準。
- Mock 資料
- 模擬真實業務場景的偽造資料,用於前端開發、API 聯調、自動化測試等尚未對接真實後端的場景,要求結構與真實 API 一致。
- Schema
- 描述資料結構的定義,例如「使用者包含 id、name、email 三個欄位」。本工具中 Schema 指左側欄位建構器中定義的欄位名稱與類型集合。
- UUID (v4)
- 通用唯一識別碼,RFC 4122 標準定義的 128 位元字串。v4 基於隨機數產生(含 13/8/9/a/b 變體位),幾乎不會重複,常用於分散式主鍵。
- 欄位類型 (Field Type)
- 本工具中每個欄位必須指定的資料類型,決定該欄位會產生何種格式的隨機值。例如 Email 類型產生電子郵件格式字串,Integer 類型產生整數。
- Enum(列舉)
- 從預先定義的離散值集合中隨機抽取一個的欄位類型。例如定義 admin,user,guest 三選一,適合角色、狀態、等級欄位。
- min / max
- 欄位取值範圍限制,僅對 Integer、Number、Paragraph 三種類型生效。設定後隨機數將在該閉區間內產生,避免出現明顯造假的邊界值。
- 單物件 vs 陣列輸出
- 本工具支援兩種輸出形式:取消勾選「產生為陣列」時輸出單一 JSON 物件 {}(適合 API 單筆除錯),勾選並填入數量時輸出物件陣列 [...](適合批次資料)。
- RFC 4122
- UUID 的國際標準規範,定義 UUID 的格式、版本(v1-v5)和變體位。本工具產生的 UUID 符合 v4 規範。
- CodeMirror
- 瀏覽器端程式碼編輯器元件,本工具右側輸出區使用 CodeMirror 提供 JSON 語法高亮、行號顯示與唯讀瀏覽能力。
- 本地處理
- 所有欄位構造和資料產生完全在使用者瀏覽器內透過 JavaScript 執行,不上傳到任何伺服器,更快也更安全,適合處理敏感業務欄位。
- Fixture
- 測試中固定使用的樣本資料檔案。產生器輸出可儲存為 generated.json 作為後續回歸測試的 fixture,確保測試結果可重現。
欄位類型與產生規則速查表
本工具 13 種內建欄位類型的取值範圍、典型用途與範例:
| 欄位類型 | 產生規則 | 範例 | 典型用途 |
|---|---|---|---|
String | a-z 與 0-9 隨機組合,長度 min-max(預設 5-20) | a8f3k0d2 | 通用隨機字串、ID 前綴、Token |
Integer | 閉區間 [min, max] 內的隨機整數(預設 0-100) | 42 | 年齡、數量、計數、排序 |
Number | 閉區間 [min, max] 內的隨機小數,保留 2 位 | 73.28 | 價格、評分、座標、機率 |
Boolean | true / false 等機率隨機 | true | 是否啟用、是否刪除、開關狀態 |
Email | firstName.lastName + 1-999 + 內建測試網域 | james.smith247@example.com | 使用者電子郵件、通知收件人 |
Name | 內建英文 FirstName + LastName 庫隨機組合 | Jennifer Martinez | 使用者名稱、客戶名稱、作者名稱 |
UUID | RFC 4122 v4 規範,含版本位 (4) 與變體位 | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 主鍵 ID、訂單號、追蹤 ID |
Date | 2020-01-01 至當前時間的 ISO 8601 時間戳記 | 2024-08-15T07:23:11.000Z | 建立時間、更新時間、生效日期 |
URL | https://www.{測試網域}/{lorem 詞}-{1-999} | https://www.test.org/lorem-742 | 頭像 URL、跳轉連結、資源網址 |
Phone | +1-XXX-XXX-XXXX 美式電話格式 | +1-415-308-7241 | 聯絡電話、客服號碼 |
Paragraph | min-max 詞數的 lorem 段落(預設 10-50) | lorem ipsum dolor sit amet ... | 簡介、備註、描述、評論 |
Enum | 從逗號分隔的自訂值清單中隨機抽取 | admin | 角色、狀態、等級、類型 |
Array | 1-5 個 String 元素組成的字串陣列 | ["a8f", "k0d", "92x"] | 標籤、關鍵字、附屬欄位集合 |
常見 JSON 產生場景與推薦欄位組合
下面列出幾種最常見的 API 測試資料場景及其推薦欄位組合,可直接參考新增:
| 場景 | 推薦欄位組合 | 建議數量 |
|---|---|---|
| 使用者列表 API | id (Integer) + name (Name) + email (Email) + age (Integer 18-80) + active (Boolean) + createdAt (Date) + bio (Paragraph) | 20-50 |
| 商品列表 API | id (Integer) + name (String) + price (Number 10-9999) + stock (Integer) + category (Enum: electronics,clothing,food,book) + imageUrl (URL) | 30-100 |
| 訂單 API | orderId (UUID) + userId (Integer) + amount (Number 1-10000) + status (Enum: pending,paid,shipped,delivered) + createdAt (Date) | 10-30 |
| 部落格文章列表 | id (Integer) + title (String) + author (Name) + content (Paragraph 50-200) + tags (Array) + publishedAt (Date) | 10-20 |
| 評論列表 | id (Integer) + author (Name) + email (Email) + content (Paragraph) + rating (Integer 1-5) + createdAt (Date) | 50-200 |
| 地址簿 API | id (Integer) + name (Name) + phone (Phone) + city (String) + zipcode (String) + isDefault (Boolean) | 5-10 |
Privacy & Security
本 JSON 產生器所有欄位建構、隨機資料產生、複製下載操作完全在你的瀏覽器本地透過 JavaScript 完成,你定義的 Schema、產生的隨機資料、欄位名稱和數量都不會被上傳到任何伺服器,也不會被記錄、快取或儲存到雲端。包含內部 API 欄位、未上線業務結構、敏感測試場景可以放心使用,不存在資料外洩風險。
Authoritative References
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python