quicktype
สร้างโมเดลที่พิมพ์อย่างรุนแรงและซีเรียลไลเซอร์จากการสืบค้น JSON, JSON Schema, TypeScript และ GraphQL ทำให้การทำงานกับประเภท JSON อย่างปลอดภัยในภาษาการเขียนโปรแกรมต่างๆ เป็นเรื่องง่าย
quicktype
ในเบราว์เซอร์ของคุณเจสัน | URL ของ JSON API | สคีมา JSON |
---|
TypeScript | แบบสอบถาม GraphQL |
---|
ทับทิม | จาวาสคริปต์ | ไหล | สนิม | คอตลิน |
---|
โผ | หลาม | ค# | ไป | ซี++ |
---|
ชวา | สกาล่า | TypeScript | สวิฟท์ | วัตถุประสงค์-C | เอล์ม |
---|
สคีมา JSON | หอก | Prop-ประเภท | ฮาสเคล | PHP |
---|
คิดถึงภาษาที่คุณชื่นชอบใช่ไหม? กรุณาดำเนินการ!
มีหลายวิธีในการใช้ quicktype
app.quicktype.io เป็น UI ที่ทรงพลังและสมบูรณ์ที่สุด เว็บแอปยังทำงานแบบออฟไลน์และไม่ได้ส่งข้อมูลตัวอย่างของคุณทางอินเทอร์เน็ต ดังนั้นให้วางเลย!
เพื่อ CLI ที่ดีที่สุด เราขอแนะนำให้ติดตั้ง quicktype
ทั่วโลกผ่านทาง 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
วิธีที่แนะนำในการใช้ quicktype
คือการสร้างสคีมา JSON จากข้อมูลตัวอย่าง ตรวจสอบและแก้ไขสคีมา ส่งมอบสคีมากับที่เก็บโปรเจ็กต์ของคุณ จากนั้นสร้างโค้ดจากสคีมาโดยเป็นส่วนหนึ่งของกระบวนการสร้างของคุณ:
# 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.
คุณสามารถบรรลุผลลัพธ์ที่คล้ายกันได้โดยการเขียนหรือสร้างไฟล์ TypeScript จากนั้นพิมพ์อย่างรวดเร็ว TypeScript เป็นชุดคำสั่งพิเศษของ JavaScript ที่มีไวยากรณ์ที่เรียบง่ายและกระชับสำหรับการกำหนดประเภท:
interface Person {
name : string ;
nickname ?: string ; // an optional property
luckyNumber : number ;
}
คุณสามารถใช้ TypeScript ได้เหมือนกับที่ใช้สคีมา JSON ในตัวอย่างสุดท้าย:
# 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
จาก JavaScript คุณสามารถใช้ quicktype
เป็นฟังก์ชัน JavaScript ภายใน node
หรือเบราว์เซอร์ ขั้นแรกให้เพิ่มแพ็คเกจ quicktype-core
:
$ npm install quicktype-core
โดยทั่วไป ขั้นแรกให้คุณสร้างค่า InputData
ด้วยตัวอย่าง JSON, สคีมา JSON, แหล่งที่มาของ TypeScript หรือประเภทอินพุตอื่นๆ ที่รองรับตั้งแต่หนึ่งรายการขึ้นไป จากนั้นคุณเรียก quicktype
โดยส่งค่า InputData
และตัวเลือกใด ๆ ที่คุณต้องการ
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 ( ) ;
อาร์กิวเมนต์ของ quicktype
เป็นวัตถุที่ซับซ้อนพร้อมคุณสมบัติเสริมมากมาย สำรวจคำจำกัดความเพื่อทำความเข้าใจว่าตัวเลือกใดบ้างที่ได้รับอนุญาต
quicktype
คือ Open Source และเรารักผู้มีส่วนร่วม! จริงๆ แล้ว เรามีรายการปัญหาที่มีลำดับความสำคัญต่ำสำหรับเรา แต่เราก็ยินดีที่จะยอมรับการมีส่วนร่วม การสนับสนุนภาษาเป้าหมายใหม่ก็เป็นที่ต้องการอย่างมากเช่นกัน หากคุณต้องการมีส่วนร่วม ต้องการความช่วยเหลือใดๆ เลย หรือแค่อยากพูดคุยเรื่องต่างๆ เชิญเข้าร่วม Slack กับเรา
quicktype
ถูกนำไปใช้ใน TypeScript และต้องใช้ nodejs
และ npm
ในการสร้างและรัน
ขั้นแรก ให้ติดตั้ง typescript
ทั่วโลกผ่าน npm
:
โคลน repo นี้และทำ:
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 c li i ndex.js # Run
ติดตั้ง Visual Studio Code เปิดพื้นที่ทำงานนี้ และติดตั้งส่วนขยายที่แนะนำ:
code . # opens in VS Code
เมื่อทำงานกับภาษาเอาต์พุต คุณจะต้องดูเอาต์พุตที่สร้างขึ้นในขณะที่คุณแก้ไข ใช้ npm start
เพื่อดูการเปลี่ยนแปลง และคอมไพล์ใหม่และรัน quicktype
อีกครั้งเพื่อรับคำติชมแบบสด ตัวอย่างเช่น หากคุณกำลังพัฒนาตัวเรนเดอร์ใหม่สำหรับ fortran
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อสร้างและเรียกใช้ quicktype
อีกครั้งเมื่อคุณใช้ตัวเรนเดอร์ของคุณ:
npm start -- " --lang fortran pokedex.json "
คำสั่งในเครื่องหมายคำพูดจะถูกส่งผ่านไปยัง quicktype
ดังนั้นคุณจึงสามารถเรนเดอร์ไฟล์ .json
ในเครื่อง, URL หรือเพิ่มตัวเลือกอื่นๆ ได้
# 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