JSON 轉 Rust Struct 工具
從 JSON 推匯出支援 Serde 的 Rust Struct,包含巢狀物件、向量、可選欄位、null 值、重新命名以及標準化識別碼衝突。
隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。
使用方式
- 1.貼上代表性嚴格的 JSON,並輸入一個 ASCII 根型別名稱。
- 2.產生並檢視數值寬度、Option、混合值、巢狀名稱以及 Serde 重新命名。
- 3.將結果複製到支援 Serde 的 Rust 專案中,格式化、編譯,並對真實測試案例進行往返驗證。
關於JSON 轉 Rust Struct 工具
JSON 轉 Rust Struct 工具可將一個嚴格的 JSON 樣本轉換為 Rust 程式碼,使用 Serde 的自動匯出功能。貼上一個物件、陣列或基本型別,選擇根型別名稱,產生、檢視並複製。該頁面僅輸出程式碼文字,不會編譯 Rust、安裝套件、執行產生的程式碼,或上傳樣本。
字串轉為擁有型字串(String),布林值轉為 bool,安全的 JSON 整數轉為 i64,其他 JSON 數值轉為 f64。陣列轉為元素型別的 Vec。空陣列使用 Vec<serde_json::Value>,因為沒有樣本證據能確定元素型別。null 轉為 Option<serde_json::Value>,若與觀察到的型別結合則轉為該型別的 Option。
物件轉為公開的結構體,帶有 Serialize、Deserialize 與 Debug 的自動匯出。巢狀物件轉為命名的巢狀結構體。當陣列包含物件時,所有物件中出現的欄位會被視為必填,而至少一個物件中缺失的欄位則會轉為 Option。整數與小數觀察值會合併為 f64。不相容的混合值會回退至 serde_json::Value,而非建立列舉或預設選擇第一種型別。
JSON 關鍵字會轉為 ASCII 險蛇式(snake_case)的 Rust 欄位。首字母大寫、空格、標點符號與連字元會轉為底線。前導數字會加上字首,Rust 關鍵字會加上尾綴底線,衝突的識別碼會加上數字字尾。只要 Rust 欄位與 JSON 關鍵字不同,就會使用 serde 重新命名屬性來保留原始的網路名稱。巢狀型別名稱會根據其路徑安全匯出。
僅從一個樣本無法建立 API 合約。這裡出現的欄位可能在別處為可選;一個小整數可能需要 u64、i128、Decimal 或字串;一個字串可能代表 UUID、日期、URL、列舉、借用切片或機密資料;混合物件可能需要標記的列舉。請參考權威的 API 檔案以及多個成功與失敗的測試案例。
產生的匯入設定假設支援 Serde 的匯出功能。JSON 的解析在目標環境中通常也需要 serde_json。本頁面不引入任何依賴;複製的程式碼應放入一個 Cargo.toml 中明確標記相容版本的專案中。此產生器不會新增套件路徑、模組可見性政策、生命週期、泛型、自訂序列化、禁止未知欄位、預設值、展平、標記或驗證。
必須提供嚴格的 JSON。註解、尾隨逗點、NaN、無限大、BigInt 語法、未定義值以及 JavaScript 物件字面量皆被拒絕。JSON 數值會先由 JavaScript 解析,因此不安全的整數寫法無法精確表示,將回退至不使用 i64 的推導。請保留對精確度敏感的識別碼與小數,並以字串形式保留在原始合約中。
處理範圍受限於 500,000 輸入字元、50,000 值、40 巢狀層次以及 1,000,000 輸出字元。八個外部測試案例固定了 String、i64、f64、bool、Vec、Option、null 與關鍵字重新命名語法。額外測試涵蓋巢狀結構體、標準化衝突處理以及錯誤輸入。格式化並編譯複製的程式碼,然後使用 serde_json 對代表性 JSON 進行往返測試後才會採用。
方法與來源
解析嚴格的 JSON,遞迴推導 Rust 基本型別與容器,將缺少欄位的物件樣本合併為 Option,對於不相容的證據回退至 serde_json::Value,標準化衝突安全的 Rust 識別碼,當網路欄位與 Rust 欄位不一致時加入 Serde 重新命名屬性,並輸出 Serialize/Deserialize 的自動匯出。
常見問題
- 為何一個混合欄位轉成了 serde_json::Value?
- 僅憑一個樣本無法保證安全的列舉或轉換規則。值會保留不確定性,直到你定義出真實的合約。
- 為何一個缺失的欄位會是 Option?
- 當多個物件樣本中並非所有都包含某個欄位時,Option 代表該欄位的觀察性缺失。更廣泛的生產資料可能需要進一步調整。
- 輸出的程式碼在沒有依賴的情況下可以編譯嗎?
- 目標專案需要相容的 Serde 自動匯出支援,通常也需要 serde_json。本頁面僅產生程式碼文字。
相關工具
- JSON 轉 Zod 模式轉換器從一個 JSON 例子推匯出可審查的 Zod 模式,包含巢狀物件、陣列、合併型態、可空值以及可選的合併欄位。
- JSON 驗證工具確認 JSON 是否有效,並以行與列為單位精確指出語法錯誤,同時提供結構診斷,全程在瀏覽器中執行。
- JSON 格式化工具在瀏覽器中格式化、壓縮並驗證 JSON —— 可以美化顯示或壓縮為單行,並精確標示錯誤位置。
- 從 JSON 轉換為 CSV將一個非空的 JSON 物件陣列,以預設的電子表格公式保護方式,轉換為 RFC 4180 風格的 CSV,並在本機執行。
- ANSI 色彩碼產生器建立並複製原始 SGR 逸出序列,並搜尋標準 8 色加亮 8 色的終端機色碼。
- ASCII 表格查詢所有標準 7 位 ASCII 編碼的精確十進位、十六進位、八進位與二進位值。
開發者工具 使用指南
查看全部- Rust: Convert a Struct to a JSON String With serde (英文原文)
- Convert JSON to Rust Struct With Serde Derives (英文原文)
- Convert .properties Files to JSON Online (英文原文)
- Random MAC Address On or Off: A Developer Guide (英文原文)
- Generate a JWT for Testing: HS256 Tokens in Your Browser (英文原文)
- How to Decode JWT Tokens in Angular Apps (英文原文)
- JSON Schema to Zod: Inference Limits and a Safer Path (英文原文)
- How to Convert JSON to Excel in Python (英文原文)
- JSON to CSV Alternative With Built-In Formula Protection (英文原文)
- Format a JSON File in VS Code and in Your Browser (英文原文)
- Local JavaScript Playground Alternative for Safe Testing (英文原文)
- How to Convert IPv4 to a 32-Bit Integer for Storage (英文原文)
- Convert Decimal Numbers to IEEE 754 Floating Point Format (英文原文)
- HTTP Status Codes Alternative: A Registry-First Lookup (英文原文)
- How to Edit HTML in a Browser Using a Sandboxed Preview (英文原文)
- Format HTML Code from Notepad++ Without Plugins (英文原文)
- Why Is Hello World Used in Programming: A Practical Guide (英文原文)
- How to Make Flexbox Items Fill the Container Height (英文原文)
- File Signatures List Alternative: Twelve Verified Prefixes (英文原文)
- How to Open Excel Files Online in a Browser Preview (英文原文)