JSON 產生器

結構描述建立器
1
-
2
3
4
-
5
6
7
-
數量:

免費線上 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 範例
  • 前端表單驗證、本地快取邏輯撰寫時,構造邊界值測試(極小 / 極大 / 空 / 異常類型)

使用方法

  1. 在左側「模式建構器」中查看預設範例 Schema(id / name / email / age / active / createdAt / bio 共 7 欄位),或點選「+」新增自訂欄位
  2. 為每個欄位設定欄位名稱(自訂)和欄位類型(13 種下拉選單);數值與段落類型可填 min / max,Enum 類型可填逗號分隔的候選值
  3. 勾選「產生為陣列」並設定數量(1-1000),或取消勾選只產生單筆 JSON 物件
  4. 點選右上角「產生」按鈕,右側編輯器即時顯示格式化好的 JSON 結果,並顯示欄位數和產生筆數
  5. 點選「複製」把結果貼到程式碼 / 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 種內建欄位類型的取值範圍、典型用途與範例:

欄位類型產生規則範例典型用途
Stringa-z 與 0-9 隨機組合,長度 min-max(預設 5-20)a8f3k0d2通用隨機字串、ID 前綴、Token
Integer閉區間 [min, max] 內的隨機整數(預設 0-100)42年齡、數量、計數、排序
Number閉區間 [min, max] 內的隨機小數,保留 2 位73.28價格、評分、座標、機率
Booleantrue / false 等機率隨機true是否啟用、是否刪除、開關狀態
EmailfirstName.lastName + 1-999 + 內建測試網域james.smith247@example.com使用者電子郵件、通知收件人
Name內建英文 FirstName + LastName 庫隨機組合Jennifer Martinez使用者名稱、客戶名稱、作者名稱
UUIDRFC 4122 v4 規範,含版本位 (4) 與變體位f47ac10b-58cc-4372-a567-0e02b2c3d479主鍵 ID、訂單號、追蹤 ID
Date2020-01-01 至當前時間的 ISO 8601 時間戳記2024-08-15T07:23:11.000Z建立時間、更新時間、生效日期
URLhttps://www.{測試網域}/{lorem 詞}-{1-999}https://www.test.org/lorem-742頭像 URL、跳轉連結、資源網址
Phone+1-XXX-XXX-XXXX 美式電話格式+1-415-308-7241聯絡電話、客服號碼
Paragraphmin-max 詞數的 lorem 段落(預設 10-50)lorem ipsum dolor sit amet ...簡介、備註、描述、評論
Enum從逗號分隔的自訂值清單中隨機抽取admin角色、狀態、等級、類型
Array1-5 個 String 元素組成的字串陣列["a8f", "k0d", "92x"]標籤、關鍵字、附屬欄位集合

常見 JSON 產生場景與推薦欄位組合

下面列出幾種最常見的 API 測試資料場景及其推薦欄位組合,可直接參考新增:

場景推薦欄位組合建議數量
使用者列表 APIid (Integer) + name (Name) + email (Email) + age (Integer 18-80) + active (Boolean) + createdAt (Date) + bio (Paragraph)20-50
商品列表 APIid (Integer) + name (String) + price (Number 10-9999) + stock (Integer) + category (Enum: electronics,clothing,food,book) + imageUrl (URL)30-100
訂單 APIorderId (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
地址簿 APIid (Integer) + name (Name) + phone (Phone) + city (String) + zipcode (String) + isDefault (Boolean)5-10

Privacy & Security

本 JSON 產生器所有欄位建構、隨機資料產生、複製下載操作完全在你的瀏覽器本地透過 JavaScript 完成,你定義的 Schema、產生的隨機資料、欄位名稱和數量都不會被上傳到任何伺服器,也不會被記錄、快取或儲存到雲端。包含內部 API 欄位、未上線業務結構、敏感測試場景可以放心使用,不存在資料外洩風險。

Authoritative References