quicktype
menghasilkan model dan serializer yang diketik dengan kuat dari kueri JSON, Skema JSON, TypeScript, dan GraphQL, sehingga memudahkan untuk bekerja dengan tipe JSON dengan aman di banyak bahasa pemrograman.
quicktype
di browser Anda.JSON | URL API JSON | Skema JSON |
---|
skrip ketikan | Kueri GraphQL |
---|
Rubi | JavaScript | Mengalir | Karat | Kotlin |
---|
Anak panah | ular piton | C# | Pergi | C++ |
---|
Jawa | skala | skrip ketikan | Cepat | Tujuan-C | Elm |
---|
Skema JSON | Tombak | Tipe Prop | Haskell | PHP |
---|
Kehilangan bahasa favorit Anda? Silakan terapkan!
Ada banyak cara untuk menggunakan quicktype
. app.quicktype.io adalah UI paling kuat dan lengkap. Aplikasi web juga berfungsi offline dan tidak mengirimkan data sampel Anda melalui Internet, jadi tempelkan saja!
Untuk CLI terbaik, kami merekomendasikan menginstal quicktype
secara global melalui 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
Cara yang disarankan untuk menggunakan quicktype
adalah dengan membuat skema JSON dari data sampel, meninjau dan mengedit skema, menerapkan skema ke repo proyek Anda, lalu membuat kode dari skema sebagai bagian dari proses pembangunan Anda:
# 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.
Anda dapat mencapai hasil serupa dengan menulis atau membuat file TypeScript, lalu mengetiknya dengan cepat. TypeScript adalah superset JavaScript yang diketik dengan sintaks sederhana dan ringkas untuk menentukan tipe:
interface Person {
name : string ;
nickname ?: string ; // an optional property
luckyNumber : number ;
}
Anda dapat menggunakan TypeScript seperti skema JSON yang digunakan pada contoh terakhir:
# 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
dari JavaScript Anda dapat menggunakan quicktype
sebagai fungsi JavaScript dalam node
atau browser. Pertama tambahkan paket quicktype-core
:
$ npm install quicktype-core
Secara umum, pertama-tama Anda membuat nilai InputData
dengan satu atau beberapa sampel JSON, skema JSON, sumber TypeScript, atau tipe input lain yang didukung. Kemudian Anda memanggil quicktype
, meneruskan nilai InputData
dan opsi apa pun yang Anda inginkan.
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 ( ) ;
Argumen quicktype
adalah objek kompleks dengan banyak properti opsional. Jelajahi definisinya untuk memahami opsi apa yang diperbolehkan.
quicktype
adalah Open Source dan kami menyukai kontributor! Faktanya, kami mempunyai daftar permasalahan yang merupakan prioritas rendah bagi kami, namun kami akan dengan senang hati menerima kontribusinya. Dukungan untuk bahasa target baru juga sangat diinginkan. Jika Anda ingin berkontribusi, membutuhkan bantuan dalam hal apa pun, atau hanya ingin membicarakan berbagai hal, bergabunglah dengan kami di Slack.
quicktype
diimplementasikan dalam TypeScript dan memerlukan nodejs
dan npm
untuk membangun dan menjalankannya.
Pertama, instal typescript
secara global melalui npm
:
Kloning repo ini dan lakukan:
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
Instal Visual Studio Code, buka ruang kerja ini, dan instal ekstensi yang disarankan:
code . # opens in VS Code
Saat mengerjakan bahasa keluaran, Anda pasti ingin melihat keluaran yang dihasilkan saat Anda mengedit. Gunakan npm start
untuk melihat perubahan dan kompilasi ulang serta jalankan kembali quicktype
untuk mendapatkan umpan balik langsung. Misalnya, jika Anda mengembangkan penyaji baru untuk fortran
, Anda dapat menggunakan perintah berikut untuk membangun kembali dan mengaktifkan kembali quicktype
saat Anda mengimplementasikan penyaji Anda:
npm start -- " --lang fortran pokedex.json "
Perintah dalam tanda kutip diteruskan ke quicktype
, sehingga Anda dapat merender file .json
lokal, URL, atau menambahkan opsi lain.
# 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