يُنشئ quicktype
نماذج ومتسلسلات مكتوبة بقوة من استعلامات JSON وJSON Schema وTypeScript وGraphQL، مما يجعل من السهل العمل مع JSON بأمان في العديد من لغات البرمجة.
quicktype
في متصفحك.JSON | عناوين URL لواجهة برمجة تطبيقات JSON | مخطط جيسون |
---|
تايب سكريبت | استعلامات GraphQL |
---|
روبي | جافا سكريبت | تدفق | الصدأ | كوتلين |
---|
دارت | بايثون | ج # | يذهب | سي ++ |
---|
جافا | سكالا | تايب سكريبت | سويفت | الهدف-C | الدردار |
---|
مخطط جيسون | رمح | أنواع الدعامة | هاسكل | PHP |
---|
هل تفتقد لغتك المفضلة؟ يرجى تنفيذها!
هناك طرق عديدة لاستخدام quicktype
. app.quicktype.io هي واجهة المستخدم الأقوى والأكمل. يعمل تطبيق الويب أيضًا دون اتصال بالإنترنت ولا يرسل بياناتك النموذجية عبر الإنترنت، لذا الصقها بعيدًا!
للحصول على أفضل واجهة سطر أوامر (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
من جافا سكريبت يمكنك استخدام 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
مفتوح المصدر ونحن نحب المساهمين! في الواقع، لدينا قائمة بالقضايا التي لا تحظى بأولوية كبيرة بالنسبة لنا، ولكن يسعدنا أن نقبل المساهمات بشأنها. كما أن دعم اللغات المستهدفة الجديدة أمر مرغوب فيه بشدة. إذا كنت ترغب في المساهمة، أو تحتاج إلى مساعدة في أي شيء على الإطلاق، أو ترغب فقط في مناقشة الأمور، انضم إلينا على Slack.
يتم تنفيذ quicktype
في TypeScript ويتطلب إنشاء وتشغيل nodejs
و npm
.
أولاً، قم بتثبيت typescript
عالميًا عبر npm
:
استنساخ هذا الريبو والقيام بما يلي:
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