Comments (1)
There are a couple of pieces needed for inheritance:
-
An IR representation of subclassing. This can be as simple as adding a "superclass" property to
ClassType
. -
A way to generate those subclasses from JSON Schema. The proper place for this is most likely
JSONSchemaInput.ts
. -
Target language support for subclasses. For most languages this is probably easy to implement. We probably won't support it on all languages (right away at least), so they should only be generated from JSON Schema if the target language supports them.
Once this is done, quicktype should be able to generate types and serializers for subclasses. Deserializers, however, would still be missing. To get those we'd need
-
A mechanic in quicktype to figure out how to distinguish between subclasses of a common superclass. In the most general case this is quite difficult, but we could at first insist that each instance has a string field which has a different value for each subclass, which is quite common in JSON. The output of that would be a transformer that switches on that string and instantiates the correct subclass. This is the rockiest part of the whole chain, since transformers are still relatively new and a bit crufty.
-
Transformers in the target languages that we want to support subclasses in. Right now transformers are only implemented in C# and Python. Luckily in JS/TypeScript/Flow they're relatively easy to implement.
I'm happy to help with all of this.
from quicktype.
Related Issues (20)
- Key names are formatted in the target language, and not the source language
- Just wanted to say thank you
- Swift 5.9 warning about Hashable being deprecated
- Suggestion: Allow choosing whether to export types
- Support node 21 HOT 4
- TS7018 error in generated typescript
- Better PHP Support HOT 10
- Document / add a setting for http proxy configuration
- Many warnings in multiFileOutput
- [C++] Generated headers need more helpful comments and should auto-include "Generators.hpp"
- Consider protected emitPackageDefinitions in GoRenderer
- [Feature Request] Add option to use magic_enum for static enum reflection in C++
- Generated Python Dataclasses from a JSON schema not valid (non-default argument follows default argument) HOT 1
- incorrect type import syntax HOT 3
- Maintain original keys/fields ordering HOT 1
- "Partial option parsing should not have failed"
- For C# language, can you use the native JsonSerializer instead of Newtonsoft.Json?
- Kotlin date and datetime types are generated as strings from json schema
- Kotlin enum values cannot be generate uppercase from json schema
- `golang` test failure on `test/inputs/json/misc/734ad.json` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quicktype.