quicktype
、JSON、JSON スキーマ、TypeScript、GraphQL クエリから厳密に型指定されたモデルとシリアライザーを生成し、多くのプログラミング言語で JSON をタイプセーフに操作することを簡単にします。
quicktype
試してください。JSON | JSON API URL | JSONスキーマ |
---|
TypeScript | GraphQLクエリ |
---|
ルビー | JavaScript | 流れ | さび | コトリン |
---|
ダーツ | パイソン | C# | 行く | C++ |
---|
ジャワ | スカラ座 | TypeScript | 迅速 | 目的-C | エルム |
---|
JSONスキーマ | パイク | プロップタイプ | ハスケル | PHP |
---|
お気に入りの言語が見つかりませんか?ぜひ実装してください!
quicktype
使用する方法はたくさんあります。 app.quicktype.io は、最も強力で完全な UI です。この Web アプリはオフラインでも動作し、サンプル データはインターネット経由で送信されないため、そのまま貼り付けてください。
最適な CLI を実現するには、 npm
経由でquicktype
グローバルにインストールすることをお勧めします。
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 ;
}
最後の例で JSON スキーマが使用されたのと同じように、TypeScript を使用できます。
# 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
を呼び出すquicktype
、 node
またはブラウザ内で JavaScript 関数として使用できます。まず、 quicktype-core
パッケージを追加します。
$ npm install quicktype-core
一般に、まず、1 つ以上の JSON サンプル、JSON スキーマ、TypeScript ソース、またはその他のサポートされている入力タイプを使用して、 InputData
値を作成します。次に、 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
はオープンソースであり、私たちは貢献者を愛しています。実際、私たちにとって優先度は低いものの、喜んで貢献を受け入れたい問題のリストがあります。新しいターゲット言語のサポートも強く望まれています。貢献したい場合、何か手助けが必要な場合、または単に話し合いたい場合は、Slack に参加してください。
quicktype
は TypeScript で実装されており、ビルドして実行するにはnodejs
とnpm
必要です。
まず、 npm
経由でtypescript
グローバルにインストールします。
このリポジトリのクローンを作成し、次を実行します。
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