
多语言JSON数据模型生成工具
quicktype是一款开源的代码生成工具,能够将JSON、JSON Schema、TypeScript和GraphQL查询转换为多种编程语言的数据模型和序列化器。支持Ruby、JavaScript、Kotlin、Python、C#等20多种语言,quicktype简化了跨语言JSON数据处理流程,提升开发效率。该工具提供网页应用、命令行界面和JavaScript API多种使用方式,适用于各类JSON数据处理场景,为开发者提供了便捷的JSON数据处理解决方案。
quicktype generates strongly-typed models and serializers from JSON, JSON Schema, TypeScript, and GraphQL queries, making it a breeze to work with JSON type-safely in many programming languages.
quicktype in your browser.| JSON | JSON API URLs | JSON Schema |
|---|
| TypeScript | GraphQL queries |
|---|
| Ruby | JavaScript | Flow | Rust | Kotlin |
|---|
| Dart | Python | C# | Go | C++ |
|---|
| Java | Scala | TypeScript | Swift | Objective-C | Elm |
|---|
| JSON Schema | Pike | Prop-Types | Haskell | PHP |
|---|
Missing your favorite language? Please implement it!
There are many ways to use quicktype. app.quicktype.io is the most powerful and complete UI. The web app also works offline and doesn't send your sample data over the Internet, so paste away!
For the best CLI, we recommend installing quicktype globally via npm:
npm install -g quicktype
quicktype# Run quicktype without arguments for help and options quicktype # quicktype a simple JSON object in C# echo '{ "name": "David" }' | quicktype -l csharp # quicktype a top-level array and save as Go source echo '[1, 2, 3]' | quicktype -o ints.go # quicktype a sample JSON file in Swift quicktype person.json -o Person.swift # A verbose way to do the same thing quicktype \ --src person.json \ --src-lang json \ --lang swift \ --top-level Person \ --out Person.swift # quicktype a directory of samples as a C++ program # Suppose ./blockchain is a directory with files: # latest-block.json transactions.json marketcap.json quicktype ./blockchain -o blockchain-api.cpp # quicktype a live JSON API as a Java program quicktype https://api.somewhere.com/data -o Data.java
The recommended way to use quicktype is to generate a JSON schema from sample data, review and edit the schema, commit the schema to your project repo, then generate code from the schema as part of your build process:
# First, infer a JSON schema from a sample. quicktype pokedex.json -l schema -o schema.json # Review the schema, make changes, # and commit it to your project repo. # Finally, generate model code from schema in your # build process for whatever languages you need: quicktype -s schema schema.json -o src/ios/models.swift quicktype -s schema schema.json -o src/android/Models.java quicktype -s schema schema.json -o src/nodejs/Models.ts # All of these models will serialize to and from the same # JSON, so different programs in your stack can communicate # seamlessly.
You can achieve a similar result by writing or generating a TypeScript file, then quicktyping it. TypeScript is a typed superset of JavaScript with simple, succinct syntax for defining types:
interface Person { name: string; nickname?: string; // an optional property luckyNumber: number; }
You can use TypeScript just like JSON schema was used in the last example:
# First, infer a TypeScript file from a sample (or just write one!) quicktype pokedex.json -o pokedex.ts --just-types # Review the TypeScript, make changes, etc. quicktype pokedex.ts -o src/ios/models.swift
quicktype from JavaScriptYou can use quicktype as a JavaScript function within node or browsers. First add the quicktype-core package:
$ npm install quicktype-core
In general, first you create an InputData value with one or more JSON samples, JSON schemas, TypeScript sources, or other supported input types. Then you call quicktype, passing that InputData value and any options you want.
import { quicktype, InputData, jsonInputForTargetLanguage, JSONSchemaInput, FetchingJSONSchemaStore } from "quicktype-core"; async function quicktypeJSON(targetLanguage, typeName, jsonString) { const jsonInput = jsonInputForTargetLanguage(targetLanguage); // We could add multiple samples for the same desired // type, or many sources for other types. Here we're // just making one type from one piece of sample JSON. await jsonInput.addSource({ name: typeName, samples: [jsonString] }); const inputData = new InputData(); inputData.addInput(jsonInput); return await quicktype({ inputData, lang: targetLanguage }); } async function quicktypeJSONSchema(targetLanguage, typeName, jsonSchemaString) { const schemaInput = new JSONSchemaInput(new FetchingJSONSchemaStore()); // We could add multiple schemas for multiple types, // but here we're just making one type from JSON schema. await schemaInput.addSource({ name: typeName, schema: jsonSchemaString }); const inputData = new InputData(); inputData.addInput(schemaInput); return await quicktype({ inputData, lang: targetLanguage }); } async function main() { const { lines: swiftPerson } = await quicktypeJSON("swift", "Person", jsonString); console.log(swiftPerson.join("\n")); const { lines: pythonPerson } = await quicktypeJSONSchema("python", "Person", jsonSchemaString); console.log(pythonPerson.join("\n")); } main();
The argument to quicktype is a complex object with many optional properties. Explore its definition to understand what options are allowed.
quicktype is Open Source and we love contributors! In fact, we have a list of issues that are low-priority for us, but for which we'd happily accept contributions. Support for new target languages is also strongly desired. If you'd like to contribute, need help with anything at all, or would just like to talk things over, come join us on Slack.
quicktype is implemented in TypeScript and requires nodejs and npm to build and run.
First, install typescript globally via npm:
Clone this repo and do:
nvm use npm install script/quicktype # rebuild (slow) and run (fast)
npm install --ignore-scripts # Install dependencies npm install -g typescript # Install typescript globally tsc --project src/cli # Rebuild node dist\cli\index.js # Run
Install Visual Studio Code, open this workspace, and install the recommended extensions:
code . # opens in VS Code
When working on an output language, you'll want to view generated
output as you edit. Use npm start to watch for changes and
recompile and rerun quicktype for live feedback. For example, if you're
developing a new renderer for fortran, you could use the following command to
rebuild and reinvoke quicktype as you implement your renderer:
npm start -- "--lang fortran pokedex.json"
The command in quotes is passed to quicktype, so you can render local .json
files, URLs, or add other options.
# Run full test suite npm run test # Test a specific language (see test/languages.ts) FIXTURE=golang npm test # Test a single sample or directory FIXTURE=swift npm test -- pokedex.json FIXTURE=swift npm test -- test/inputs/json/samples


GPT充值
支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。


AI 图片生成平台
GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。


你的AI Agent团队
Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。


国内直接访问,限时3折
输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号