quicktype
JSON, JSON 스키마, TypeScript 및 GraphQL 쿼리에서 강력한 형식의 모델과 직렬 변환기를 생성하므로 다양한 프로그래밍 언어에서 JSON 형식을 안전하게 사용할 수 있습니다.
quicktype
사용해 보세요.JSON | JSON API URL | JSON 스키마 |
---|
타입스크립트 | GraphQL 쿼리 |
---|
루비 | 자바스크립트 | 흐름 | 녹 | 코틀린 |
---|
다트 | 파이썬 | 기음# | 가다 | C++ |
---|
자바 | 스칼라 | 타입스크립트 | 스위프트 | 오브젝티브-C | 느릅나무 |
---|
JSON 스키마 | 단창 | 소품 유형 | 하스켈 | PHP |
---|
좋아하는 언어가 없나요? 구현해주세요!
quicktype
사용하는 방법에는 여러 가지가 있습니다. app.quicktype.io는 가장 강력하고 완전한 UI입니다. 웹 앱은 오프라인에서도 작동하며 샘플 데이터를 인터넷을 통해 전송하지 않으므로 붙여넣으세요!
최상의 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
호출 node
나 브라우저 내에서 quicktype
JavaScript 기능으로 사용할 수 있습니다. 먼저 quicktype-core
패키지를 추가합니다.
$ npm install quicktype-core
일반적으로 먼저 하나 이상의 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